如果选中了其他复选框,则取消选中复选框
Checkbox uncheck if other checkbox is selected
我有许多城市输入复选框。我已将第一个复选框命名为"全部";如果用户选择该复选框,则只选中All复选框,而不选中其他城市复选框。
如果用户选中任何其他城市,则应自动取消选中All复选框。我想用JavaScript或jQuery来实现这一点。
<input type="checkbox" name="city_pref[]" id="city_all" value="0" checked /><label for="city_all">All</label>
<input type="checkbox" name="city_pref[]" id="city_pref_1" value="Chicago" /><label for="city_pref_1">Chicago</label>
<input type="checkbox" name="city_pref[]" id="city_pref_2" value="Texas" /><label for="city_pref_2">Texas</label>
等等…
试试这个
$(function(){
var el=$('input:checkbox[name="city_pref[]"]');
el.on('change', function(e){
if($(this).is(':checked')) el.not($(this)).prop('checked', false);
});
});
演示
更新:(问题澄清后)
$(function(){
var el=$('input:checkbox[name="city_pref[]"]');
el.on('change', function(e){
if($(this).attr('id')!='city_all')
{
if($(this).is(':checked')) $('#city_all').prop('checked', false);
}
else
{
if($(this).is(':checked')) el.not($(this)).prop('checked', false);
}
});
});
演示
更新:(2012年7月23日)
I want the functionality, when no checkbox is selected, then All will get selected automatically
更新的演示
你可以这样做,
实时演示
$('#city_all').change(function(){
if($(this).is(':checked'))
$('input:checkbox[name^=city_pref]').attr('checked','checked');
else
$('input:checkbox[name^=city_pref]').removeAttr('checked');
});
$('input:checkbox[name^=city_pref]').change(function(){
if($('input:checkbox[name^=city_pref]').not(':checked').length > 0)
$('#city_all').removeAttr('checked');
else
$('#city_all').attr('checked','checked');
});
注意:为了将其他和所有城市从城市中分离出来,给它们取不同的名字
Darin是对的-尽管有人给你一些关于如何解决这个问题的提示是个好主意。如果我读对了这个问题,你唯一想要的动态行为就是当有人勾选一个不是"全部"的框时;在这种情况下,您希望取消选中"全部"框。
好的,所以你需要把这个问题分解成几个部分。我会这么做:
- 为所有非"全部"控件附加一个函数。我会用类选择器来做这件事,但同样你也可以用"不命名"的方法(根据Yograj Gupta的回答)
- 在事件处理程序中,有一个
if
语句,该语句仅在发现控件被勾选时运行(即,如果选择了"All",并且您取消勾选一个城市,则不会发生任何事情) - 如果运行
if
语句,请取消选中"All"控件
现在,这些项目中的每一个都足够小,可以查阅jQuery文档。在这种情况下,你当然有一些现成的解决方案,但如果你想作为一名程序员自我改进,分解问题的方法是非常重要的。
附录:还有一个很好的论坛问题提示,如果你找到了一个能让你达到80%要求的答案,那就试着自己实现另外20%。我同意这并不总是可能的,因为每个人有时都必须寻求帮助,但从长远来看,这是一个很好的做法,你会发现这对学习过程有帮助。
尽管在寻求帮助之前应该先实现自己的代码,但我认为帮助那些不知道如何开始做某事的人是公平的。所以,我做了这个JSFiddle
<input type="checkbox" class="all">all</input>
<input type="checkbox" name="city" class="london city">london</input>
<input type="checkbox" name="city" class="rome city">rome</input>
<input type="checkbox" name="city" class="tokio city">tokio</input>
$('.all').click(function(){
$('input[name=city]').attr("checked", true)
})
$('.city').click(function(){
$('input[type=checkbox]').attr("checked", false)
$(this).attr("checked", true)
})
尝试这个
$('input:checkbox[name^=city_pref]').click(function(){
if(this.id =="city_all"){
$(this).siblings("input:checkbox").attr('checked',false);
}
else{
$('#city_all').attr('checked',false);
}
});
我会把我的扔在这里
$(function () {
$('.checkbox-all .all').attr('disabled', true); //comment out if you want them to be able to toggle the all checkbox, but their input would be overwritten so I just disable it.
$('.checkbox-all input[type="checkbox"]').change (function () {
var numSelected = $(this).parent().children(':checked:not(.all)').length;
$(this).siblings('.all').attr('checked', (numSelected == 0));
});
});
使用HTML:
<div class="checkbox-all">
<input class="all" type="checkbox" name="city_pref[]" id="city_all" value="0" checked /> <label for="city_all">All</label><br/>
<input type="checkbox" name="city_pref[]" id="city_pref_1" value="Chicago" /> <label for="city_pref_1">Chicago</label><br/>
<input type="checkbox" name="city_pref[]" id="city_pref_2" value="Texas" /> <label for="city_pref_2">Texas</label>
</div>
仅供参考,您的label
元素在您的示例中设置不正确,我在HTML中正确设置了for
属性。
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript在页面加载时取消选中所有复选框
- (取消)使用单独的复选框激活复选框列表
- jQuery-取消选中复选框
- 单击或取消选中复选框时,如何创建弹出的自定义窗口
- Javascript选中/取消选中所有复选框并将值写入文本区域
- dojo/cbtree取消选中所有复选框并选中选中复选框
- 通过选中和取消选中复选框来添加和删除数组中的值
- 当与之关联的 ng-model 为 false 时,Angularjs 复选框值不会取消选中
- 如何通过jQuery选中所有复选框并在单击一个复选框时取消选择
- 使用Javascript根据组中的值选中或取消选中复选框
- 选中和取消选中 JavaScript 中的复选框
- 可以't取消选中该复选框(取消选中复选框时隐藏内容)
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 如何使用复选框取消选中来清除单选按钮
- 复选框取消单击事件Javascript
- 选中复选框(取消)时显示另一个文本
- Javascript复选框取消选中其他复选框,反之亦然