我正在尝试使用 jQuery 对表单进行一些验证;我需要一种方法,我可以在其中验证 a 中的所有控件是否已被填写 \ 选中。我的应用程序支持的 CheckBoxLists 让我很难过,因为 jQuery 似乎喜欢单独处理每个复选框,但我真正需要做的是评估 div 中的所有 CBL,并知道每个 CBL 是否至少有一个单独的复选框被选中。
我可以按我认为合适的方式命名 DIV 和各个 CBL 的 ID(CBL1、CBL2 等也可以)。我真的需要一种方法来解析
我正在尝试使用 jQuery 对表单进行一些验证;我需要一种方法,我可以在其中验证 a 中的所有控件是否已被填写 \ 选中。我的应用程序支持的 CheckBoxLists 让我很难过,因为 jQuery 似乎喜欢单独处理每个复选框,但我真正需要做的是评估 div 中的所有 CBL,并知道每个 CBL 是否至少有一个单独的复选框被选中。
我可以按我认为合适的方式命名 DIV 和各个 CBL 的 ID(CBL1、CBL2 等也可以)。我真的需要一种方法来解析
假设 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:这里
function hasBoxesChecked(id) {
return $(":checkbox:checked", document.getElementById(id)).length > 0;
}
这是一个现场演示
尝试这个:
$('.checkboxlist').filter(function(){
return $(this).find(':checked').size()>0;
}).size()
这将为您提供至少选中一个复选框的 CBL 数量。
您需要在每个列表中选择至少 1 个复选框。想知道这是否可行(让所有 CBL 都有一个以“CBL”开头的 ID(例如 CBL1、CBL2、...)):
var valid = true;
$('[id^="CBL"]').each(function(i,v){
valid = valid && ($(this).find(':checkbox:checked').size() >= 1);
});
alert(valid);