取消选中全选复选框
De-selecting a select all checkbox
我有一个复选框,它会选择所有选项,此时如果我按下它,它会选中所有选项(这很好!(,然后如果我取消选择其中一个,它不会取消选择所有选项。如有任何帮助,我们将不胜感激。
<span class="glyphicon glyphicon-check"></span>
<label for="sel1">Select days:</label><br />
<li>
<input type="checkbox" name="all" id="all" />
<label for='all'>Select All</label>
<ul>
<ul>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_1" value="1" />
<label for="box_1">Monday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_2" value="2" />
<label for="box_2">Tuesday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_3" value="3" />
<label for="box_3">Wednesday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_4" value="4" />
<label for="box_4">Thursday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_5" value="5" />
<label for="box_5">Friday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_6" value="6" />
<label for="box_6">Saturday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_7" value="7" />
<label for="box_7">Sunday</label>
</li>
</ul>
</ul>
</li>
</div>
我当前用于全选的脚本:
$(document).ready(function(){
$('input[name="all"],input[name="title"]').bind('click', function(){
var status = $(this).is(':checked');
$('input[type="checkbox"]', $(this).parent('li')).prop('checked', status);
});
});
$(document).ready(function){
}
示例:http://jsfiddle.net/0e018w0y/
你是那里的大部分。我会在所有复选框上附加一个"更改"事件侦听器,确认(在更改时(是否选中了所有复选框。。。(仅供参考,您使用的是复选框,而不是单选按钮。单选按钮一次只允许选择1。(
// On change of any (not "Select All" checkbox)
$('input[name="selected[]"]').change(function () {
var selectAll = true;
// Confirm all checkboxes are checked (or not)
$('input[name="selected[]"]').each(function (i, obj) {
if ($(obj).is(':checked') === false) {
// At least one checkbox isn't selected
selectAll = false;
return false;
}
});
// Update "Select All" checkbox appropriately
$('input[name="all"]').prop('checked', selectAll);
});
在这个例子中,我试图遵循您的惯例来检查是否选择了内容等等——除了我使用了"change()
"而不是"click()
"(它捕捉任何更改事件,而不仅仅是鼠标点击(。
逐行:
$('input[name="selected[]"]').change(function () {
...
}
这将捕获所有选择框上的更改事件。您可以使用类或名称约定来标识要附加到的复选框。
var selectAll = true;
此变量的作用域到达提供给随后的.each(...)
调用的无名称函数。我们使用它来跟踪是否选中了每个复选框。
$('input[name="selected[]"]').each(function (i, obj) {
if ($(obj).is(':checked') === false) {
// At least one checkbox isn't selected
selectAll = false;
return false;
}
});
这会选中每个复选框,查看是否有未复选框。
然后我们适当地更新"全选"复选框。
再看一遍(2分钟后(,我可以看到这实际上可以减少:
var allSelected = ($('input[name="selected[]"]:not(:checked)').length === 0);
// Update "Select All" checkbox appropriately
$('input[name="all"]').prop('checked', allSelected);
我还没有测试这是否更快。。。我刚刚将"已检查"的检查卸载到jQuery本身。"length
"属性返回有多少元素符合条件-":not(:checked)
"符合您的预期,只匹配前面提到的未检查的输入。
如果计数不等于0,则取消选中"全选"复选框。
示例:http://jsfiddle.net/zyxgm2kz/
试试这个:
您需要为所有
checkbox
天绑定一个change
侦听器,如果选中了所有复选框,则可以使用select all
复选框checked
属性。
$(document).ready(function () {
var allCB = $('input[name="selected[]"]');
var mainCB = $('input[name="all"]')
mainCB.on('click', function () {
var status = $(this).is(':checked');
allCB.prop('checked', status);
});
allCB.on('change', function () {
var status = $('input[name="selected[]"]:checked').length === allCB.length;
$('input[name="all"]').prop('checked', status);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<li>
<input type="checkbox" name="all" id="all" />
<label for='all'>Select All</label>
<ul>
<ul>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_1" value="1" />
<label for="box_1">Monday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_2" value="2" />
<label for="box_2">Tuesday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_3" value="3" />
<label for="box_3">Wednesday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_4" value="4" />
<label for="box_4">Thursday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_5" value="5" />
<label for="box_5">Friday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_6" value="6" />
<label for="box_6">Saturday</label>
</li>
<li class="moveli">
<input type="checkbox" name="selected[]" id="box_7" value="7" />
<label for="box_7">Sunday</label>
</li>
</ul>
</ul>
</li>
你可以试试这个:
$(document).ready(function() {
$('input[name="all"],input[name="title').click(function(event) { //on click
if(this.checked) {
$('input[type="checkbox').each(function() {
this.checked = true;
});
}else{
$('.input[type="checkbox').each(function() {
this.checked = false;
});
}
});
});
演示FIDDLE
$('input[name="all"],input[name="title"]').bind('click', function () {
var status = $(this).is(':checked');
$('input[type="checkbox"]', $(this).parent('li')).prop('checked', status);
});
var checkbox = $(':checkbox').not('#all');
$(checkbox).change(function () {
checkbox.each(function () {
if ($(this).is(':checked')) {
} else {
$(':checkbox#all').prop('checked', false)
}
})
})
获取除所有复选框外的复选框,然后检查是否取消选中一个复选框,从所有中删除该复选框
演示
- 复选框/单选按钮-添加所选项目的总价
- JavaScript 复选框全选、取消全选、反转选择
- 如何知道JqGrid多选'全选'复选框被选中
- 棱角多复选框 全选
- 如何使用 rails3-jquery-autocomplete 更新复选框/单选按钮
- 燃油 UX 复选框全选
- IE issue-使用复选框/单选按钮时,jQuery.change()不会触发回调
- 引导复选框/单选按钮不改变<输入>价值
- Jquery对复选框勾选状态的影响
- 更新全选/取消全选复选框
- 样式复选框&单选按钮
- 勾选复选框全选,并刷新数据表
- AJAX多个复选框/多选
- 只有一个复选框被选中和值
- 如何使用angularjs验证复选框(必选)
- jQuery缓存刷新复选框单选按钮状态
- 基于复选框单选按钮调整总成本标价
- 自定义复选框/单选按钮,不用ID和FOR,也不用angular.js
- 我如何有一个复选框/单选按钮张贴到一个文本区,当我点击提交按钮
- 角度复选框“全选”功能不起作用