Kiểm tra jQuery nếu một đầu vào là loại hộp kiểm?


151

Tôi muốn tìm hiểu xem đầu vào có phải là hộp kiểm hay không và sau đây không hoạt động:

$("#myinput").attr('checked') === undefined

Cảm ơn bạn một lần nữa!

Câu trả lời:


333

Bạn có thể sử dụng bộ chọn giả :checkboxvới lệnh gọi hàm jQuery is:

$('#myinput').is(':checkbox')

1
Đây là phương pháp tôi luôn sử dụng.
Topher Fangio

Bạn thực sự không thể có được bất kỳ đơn giản hơn thế.
KyleFarris

9
Tại sao sử dụng công cụ chọn cho việc này? Nó hoàn toàn không cần thiết.
Tim Down

7
@Tim Down Tôi đưa ra quan điểm của bạn rằng có thể có nhiều cách hiệu quả hơn để thực hiện điều tương tự. Tôi cho rằng tôi thích phiên bản này vì mã rất dễ đọc.
Ken Browning

2
@KenBrowning: Đủ công bằng. Tôi đã khá chống jQuery vào năm 2009, đặc biệt là thái độ SO phổ biến khi sử dụng jQuery một cách mù quáng cho mọi thứ; Quan điểm của tôi đã giảm bớt một chút kể từ đó và tôi sẽ hoàn tác lại nếu tôi có thể. Tuy nhiên, tôi vẫn nghĩ rằng tôi đã có một điểm. Thay thế (mà tôi không thể phủ nhận là dài dòng hơn):var myInput = $("myinput")[0]; var isCheckbox = myInput.nodeName.toLowerCase() == "input" && myInput.type == "checkbox";
Tim Down

22
>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"

Hoặc, nhiều hơn về phong cách của jQuery:

$("#myinput").attr('type') == 'checkbox'

Hoàn toàn hợp lệ. Không đơn giản nhất.
KyleFarris

6
Nó tiết kiệm bằng cách sử dụng công cụ chọn của jQuery, việc sử dụng ở đây hoàn toàn không phù hợp. Biến thể đầu tiên tốt hơn nhiều, vì tránh mọi khả năng attr()chức năng nhầm lẫn của jQuery làm rối tung mọi thứ.
Tim Down

3
@Tim Xuống là đúng - bạn nên đổi attr()thành prop(), afaik. attr()không phải lúc nào cũng nhận được giá trị thuộc tính "thực" (nghĩa là được kiểm tra hay không) từ trình duyệt. Thành thật không chắc tại sao lại như vậy, nhưng tôi đã học được điều này một thời gian trước.
thekingoftruth

1
Trong Chome, ví dụ thứ hai của bạn phân biệt chữ hoa chữ thường: jsfiddle.net/gtza0uuL . Nó không phải với .prop, nhưng tôi không biết liệu điều đó có thể được đảm bảo hay không. Lưu ý: bạn không thể chỉ làm .toLowerCase () vì 'loại' có thể không được xác định.
xr280xr


6

Một giải pháp không phải là jQuery giống như một giải pháp jQuery:

document.querySelector('#myinput').getAttribute('type') === 'checkbox'

2

Sử dụng chức năng này:

function is_checkbox(selector) {
    var $result = $(selector);
    return $result[0] && $result[0].type === 'checkbox';
};

Hoặc plugin jquery này:

$.fn.is_checkbox = function () { return this.is(':checkbox'); };

0
$('#myinput').is(':checkbox')

đây là công việc duy nhất, để giải quyết vấn đề phát hiện xem hộp kiểm có được chọn hay không. Nó trả về đúng hay sai, tôi tìm kiếm nó hàng giờ và thử mọi thứ, bây giờ công việc của nó rõ ràng Tôi sử dụng EDG làm trình duyệt và W2UI


Hãy nhớ sử dụng bộ tái cấu trúc mã khi bạn dán mã vào câu hỏi và câu trả lời của mình.
Andres Felipe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.