JQuery确定是否已检查所有复选框列表(在div中)

时间:2010-10-25 21:10:50

标签: javascript jquery checkboxlist

我正在尝试使用jQuery对表单进行一些验证;我需要一种方法,我可以验证是否所有控件都已填写\选中。我的应用程序支持的CheckBoxLists给了我一个艰难的时间,因为jQuery似乎喜欢单独解决每个复选框,但我真正需要做的是评估div中的所有CBL并知道每个是否至少检查过一个单独的框。

我可以根据需要命名DIV和各个CBL的ID(CBL1,CBL2等也可以)。我真的需要一种方法来解析

中的所有内容

4 个答案:

答案 0 :(得分:2)

假设ASP解析你的CBL:

<h2>Interests</h2>
<ul id='CBL1' class='checkboxlist'>
    <li><input type='checkbox' name='interest' value='javascript'> JavaScript</li>
    <li><input type='checkbox' name='interest' value='jquery'> jQuery</li>
</ul>
<h2>Hobbies</h2>
<ul id='CBL2' class='checkboxlist'>
    <!-- subsequent data -->

你可以检查一下这样做:

function validateCBLs() {
    var $lists = $('ul.checkboxlist');
    $lists.each(function(i, item) {
        if ($(item).find(':checked').length < 1) {
            //Show user an error, etc
            alert('Please, check at least one item from ' + $(item).attr('id'));
        }
    });
}

JSFiddle:Here

答案 1 :(得分:0)

您需要在每个选定的列表中至少选中一个复选框。不知道这是否有效(使所有CBL的ID都以'CBL'开头(例如CBL1,CBL2,...)):

var valid = true;
$('[id^="CBL"]').each(function(i,v){
    valid = valid && ($(this).find(':checkbox:checked').size() >= 1);
});
alert(valid);

JSFiddle

答案 2 :(得分:0)

function hasBoxesChecked(id) {
  return $(":checkbox:checked", document.getElementById(id)).length > 0;
}

这是live demo

答案 3 :(得分:0)

试试这个:

$('.checkboxlist').filter(function(){
            return $(this).find(':checked').size()>0;
        }).size()

这将为您提供至少选中一个复选框的CBL数。