检查复选框是否被 jQuery 选中

IT技术 javascript jquery html checkbox
2021-01-13 08:58:23

如何使用复选框数组的 id 检查复选框数组中的复选框是否被选中?

我正在使用以下代码,但它始终返回选中复选框的计数,而不管 id。

function isCheckedById(id) {
    alert(id);
    var checked = $("input[@id=" + id + "]:checked").length;
    alert(checked);

    if (checked == 0) {
        return false;
    } else {
        return true;
    }
}
6个回答
$('#' + id).is(":checked")

如果复选框被选中,那会得到。

对于具有相同名称的复选框数组,您可以通过以下方式获取选中的列表:

var $boxes = $('input[name=thename]:checked');

然后遍历它们并查看检查的内容,您可以执行以下操作:

$boxes.each(function(){
    // Do stuff here with this
});

要查找检查了多少,您可以执行以下操作:

$boxes.length;
另一种方式是$('#'+id).attr('checked'),相当于$('#' + id).is(":checked")但更容易记住 IMO。
2021-03-11 08:58:23
@Zubin:小心.attr('checked'). 它的行为在 jQuery 1.6 中发生了变化。它曾经返回falsetrue现在它返回undefinedor "checked".is(':checked')没有这个问题。
2021-03-15 08:58:23
@John Boker:所以如果我知道只有一个具有特定类名的元素会将类选择器的返回视为数组工作?这意味着这样做:$('.ClassName')[0].is(':checked')
2021-03-15 08:58:23
注意:size() 自 jQuery 1.8 起已被弃用 - 使用 .length 代替
2021-03-21 08:58:23
@John Boker:对于死灵评论很抱歉,但是为什么它$('.ClassName').is(':checked')似乎不起作用但$('#' + id).is(":checked")确实起作用了除了通过 id 查找和通过类名查找这一事实之外。
2021-04-03 08:58:23

ID 在您的文档中必须是唯一的,这意味着您不应该这样做:

<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />

相反,删除 ID,然后按名称或包含元素选择它们:

<fieldset id="checkArray">
    <input type="checkbox" name="chk[]" value="Apples" />

    <input type="checkbox" name="chk[]" value="Bananas" />
</fieldset>

现在是 jQuery:

var atLeastOneIsChecked = $('#checkArray:checkbox:checked').length > 0;
//there should be no space between identifier and selector

// or, without the container:

var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
@DanWilliams 是的,但不在 mmcrae 给出的示例中。
2021-03-12 08:58:23
@AlejandroQuiroz 我过去也不会在 jquery 选择器中省略双引号。但最近我认为这是非常有用的,因为它提高了代码的可读性,并避免错误时的名称或类包含一个减号-标志
2021-03-14 08:58:23
为什么$('#checkArray :checkbox:checked').length > 0;在更简单的$('#checkArray').checked工作并且在更多版本上可用时使用?
2021-03-27 08:58:23
@Oddman 它确实有效,只是不在 jquery 对象上。而不是 $(elem).checked,试试 elem.checked。
2021-04-02 08:58:23
$('#checkbox').is(':checked'); 

如果复选框被选中,上面的代码返回真,否则返回假。

这对我有用,我以前使用过它, var isChecked = $('#CheckboxID').attr('checked') ? true : false; 但没有返回始终正确的值。那谢谢啦!
2021-03-14 08:58:23
使用 $(this).is(':checked') 时非常有用;谢谢!
2021-03-21 08:58:23

以下所有方法都很有用:

$('#checkbox').is(":checked")

$('#checkbox').prop('checked')

$('#checkbox')[0].checked

$('#checkbox').get(0).checked

建议应避免使用 DOMelement 或内联“this.checked”,而应使用 jQuery on 方法进行事件侦听器。

用于检查复选框是否被选中的 jQuery 代码:

if($('input[name="checkBoxName"]').is(':checked'))
{
  // checked
}else
{
 // unchecked
}

或者:

if($('input[name="checkBoxName"]:checked'))
{
    // checked
}else{
  // unchecked
}
第二个永远不会运行else块,因为一个 jQuery 对象,即使它不包含匹配的元素,也是“真实的”。添加.length到最后,然后你在说话。
2021-03-29 08:58:23
缺少第一个解决方案:......正确的一个是:if(('input[name="checkBoxName"]').is(':checked'))
2021-04-07 08:58:23
缺少美元符号 ($),应该是if($('input[name="checkBoxName"]').is(':checked')).
2021-04-08 08:58:23