0

我有多个复选框,并希望获得它们的整体价值。

例如,如果选中一个,则值为 true/selected。

如果没有选中,则为假/未选中。

我的 HTML 是:

<input id="one" type="checkbox">
<input id="two" type="checkbox">
<input id="three" type="checkbox">
<input id="four" type="checkbox">
<button onclick="check();">Is checked (jQuery Chained)</button>
<button onclick="check2();">Is checked(Big If Statement)</button>

我的 JavaScript/jQuery 是:

function check() {
    var booleee = $('#one,#two,#three,#four').attr('checked');
    alert("Checked: " + booleee);
}

function check2() {
    if ($('#one').attr('checked') || $('#two').attr('checked') || $('#three').attr('checked') || $('#four').attr('checked')) {
        alert("Checked: true");
    }
    alert("Checked: false");
}

Js Fiddle:点击这里

请注意,我已经解决了这个问题。这个问题更能帮助我理解为什么我的checked2()功能有效而我的功能check()无效。

4

5 回答 5

2

var booleee = $('#one,#two,#three,#four').attr('checked');仅检查第一个(在这种情况下#one)复选框是否被选中。

来自attr 的文档

获取匹配元素集中第一个元素的属性值。

它应该是

var booleee = $('#one,#two,#three,#four').filter(':checked').length > 0;

同样在新版本(> 1.6)中,您需要使用属性 'checked' ( .prop('checked')) 而不是attr在替代方案中您有一个:checked 过滤器so .is(':checked')

于 2013-08-22T11:04:01.107 回答
1

因为它没有检查selector.

让它发挥作用

  function check() {
    var booleee =$("input:checkbox:checked").length > 0;
    alert("Checked: " + booleee);
}

要更具体的选择,请在中添加表单 IDselector

演示

于 2013-08-22T11:07:47.747 回答
1

更好的方法:http: //jsfiddle.net/arvind07/ZP78F/

function check() {
    var checks = $('input:checkbox');
    var checked = 0;
    checks.each(function() {
        if ($(this).is(":checked")) {
            checked = 1;
            return false;
        }
    });
    if (checked) {
        alert("Checked");
    } else {
        alert("Not checked");
    }
}
于 2013-08-22T11:07:53.717 回答
0
var checked = $(':checkbox:checked').length > 0;
于 2013-08-22T11:09:31.197 回答
0

在 html 中设置选中的属性

<input id="one" type="checkbox" checked="checked">
<input id="two" type="checkbox" checked="checked">
<input id="three" type="checkbox" checked="checked">
<input id="four" type="checkbox" checked="checked">

你没有定义检查,所以它显示未定义,因为它无法读取这个属性,当你调用第二个函数时,只有 false 进入警报,因为他们的复选框检查属性找不到

演示

于 2013-08-22T11:04:42.293 回答