我有一个CheckBoxList,其中一个选项是'All'。我想选择所有选项,包括All,如果用户选中了'All',如果用户取消选中'All',我想清除选择。如果他们选择“全部”以外的任何其他选项,则不执行任何操作 任何人都可以帮我用jQuery来做这个吗?我正在使用jQuery 1.2.6
<table border="0" onclick="SelectMe(this);" id="one">
<tbody>
<tr>
<td>
<input type="checkbox" checked="checked" name="one$0" id="one_0"/><label for="one_0">All</label>
</td>
<td>
<input type="checkbox" name="two$1" id="two_1"/><label for="two_1">Option One</label>
</td>
<td>
<input type="checkbox" name="three$2" id="three_2"/><label for="three_2">Option Two</label>
</td>
<td>
<input type="checkbox" name="four$3" id="four_3"/><label for="four_3">Option Three</label>
</td>
<td>
<input type="checkbox" name="five$4" id="five_4"/><label for="five_4">Option Four</label>
</td>
</tr>
</tbody>
感谢所有人的帮助。这是我的答案 -
将此函数绑定到每个checkboxlist.items
的onclick属性function selectAll(box) {
//check if this is 'All' checkbox
var isAll = ($(box).next('label').text() == 'All');
//get the checkboxlist
var theList = $(box).parents('table:first');
//if 'All' is checked/clicked, check all options
if (isAll) {
var check = theList.find('input:checkbox')[0].checked;
$.each(theList.find('input:checkbox'), function(i, v) {
v.checked = check;
});
}
// check 'All' option if all other checkboxes are checked
else {
var allchecked = true;
$.each(theList.find('input:checkbox'), function(i, v) {
if(i) if (!v.checked) allchecked = false;
});
theList.find('input:checkbox')[0].checked = allchecked;
}
答案 0 :(得分:2)
以下内容应该有效[已更新]
$(':checkbox').click( function() {
// check if the label following the checkbox is 'All'
if ( $(this).next('label').text() == 'All')
{
if ( $(this).is(':checked'))
$(':checkbox').attr('checked', true)
else
$(':checkbox').attr('checked', false);
}
} );
更正确的是,我们应该根据for
属性检查与点击的复选框对应的标签,而不是检查下一个标签。
所以
if ( $(this).next('label').text() == 'All')
可能是
if ( $('label[for="'+$(this).attr('id')+'"]').text() == 'All')
答案 1 :(得分:0)
$(document).ready(function(){
$('input[type=checkbox]').click(function(){ //detects a check box click
if ($(this).attr('id').indexOf("one_0") > -1){ //Checks if 'all' check box was clicked
checkUncheckAll($(this).attr('checked')); //Function call to check uncheck based on checked/unchecked state of All check box
}
});
});
//Function to check uncheck all check boxes
function checkUncheckAll(checkedValue) {
$('input[type=checkbox]').each(function() {
this.checked = checkedValue;
});
}
这种方法有一个缺陷 - 函数checkUncheckAll遍历表单中的所有复选框,并检查/取消选中所有复选框。如果您正确地分配了它们的ID(例如checkSpec1,checkSpec2等),并检测其id具有checkSpec字的复选框,则可以对一组特定的复选框执行此操作。
我希望这会有所帮助。
欢呼声