jQuery检查输入是否为类型复选框?


151

我想找出输入是否为复选框,并且以下内容不起作用:

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

再一次谢谢你!

Answers:


333

您可以在:checkbox调用jQuery is函数时使用伪选择器:

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

1
这是我一直使用的方法。
Topher Fangio

您真的比这更简单。
KyleFarris

9
为什么要使用选择器引擎呢?完全没有必要。
Tim Down

7
@Tim Down,我认为您可能会有更有效的方法来完成同一件事。我想我喜欢这个版本,因为代码可读性强。
肯·布朗宁

2
@KenBrowning:足够公平。我在2009年相当反对jQuery,尤其是普遍采用的盲目使用jQuery的SO态度。从那以后,我的观点有所改善,如果可能的话,我将撤消我的反对意见。但是,我仍然认为我有一点。替代方案(我不能否认的是,它比较冗长):var myInput = $("myinput")[0]; var isCheckbox = myInput.nodeName.toLowerCase() == "input" && myInput.type == "checkbox";
蒂姆·唐

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

或者,更多的是jQuery样式:

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

完全有效。不是最简单的。
KyleFarris

6
它节省了使用jQuery的选择器引擎的功能,在这里完全不合适。第一个变种更好,因为它避免了jQuery混淆attr()函数将任何东西弄乱的可能性。
Tim Down

3
@Tim Down是正确的-您应该更改attr()prop()afaik。attr()并不总是从浏览器获取“真实”属性值(即检查或不检查)。老实说,我不确定为什么会这样,但是我前一段时间学到了。
thekingoftruth 2012年

1
在Chome中,第二个示例区分大小写:jsfiddle.net/gtza0uuL。它不是.prop,但我不知道这是否可以保证。注意:您不能只执行.toLowerCase(),因为'type'可能是未定义的。
xr280xr 2015年


6

非jQuery解决方案非常类似于jQuery解决方案:

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

2

使用此功能:

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

或者这个jQuery插件:

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

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

这是解决问题以检测复选框是否已选中的唯一工作。它返回true或false,我搜索了数小时并尝试了所有方法,现在很清楚我使用了EDG作为浏览器和W2UI


在问题和答案中粘贴代码时,请记住使用代码重构。
安德烈斯·费利佩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.