【发布时间】:2016-04-03 22:47:15
【问题描述】:
我有一个包含多个复选框组的表单。
每个复选框选项都有一个名为 itemtype 的自定义 html 5 属性。当 type="checkbox" 的输入发生变化时,我需要评估刚刚选中的复选框。如果data-itemtype 的值等于'Skipper',我想取消选中所有其他属于同一组的复选框。
换句话说,假设我有多个复选框,并且其中一个复选框选项有一个名为“无”的标签,如果用户选中“无”,则应该选择“无”。我不能在这里使用单选按钮,因为如果未选择“无”,我希望用户能够检查多个选项。
这是我的代码分解
复选框组 1
<input name="control_307[0][307:1003]" id="item_307_1003_0" value="307:1003" data-itemtype="Answer" type="checkbox"> Zulauf Ltd<br>
<input name="control_307[0][307:361]" id="item_307_361_0" value="307:361" data-itemtype="Answer" type="checkbox"> Ziemann, McLaughlin and Kohler
<input name="control_307[0][308:1013]" id="item_307_1013_0" value="308:1013" data-itemtype="Skipper" type="checkbox"> None<br>
复选框组 2
<input name="control_1000[0][1000:999]" id="item_1000_999_0" value="307:1003" data-itemtype="Answer" type="checkbox"> First Options<br>
<input name="control_1000[0][1000:666]" id="item_1000_666_0" value="1000:666" data-itemtype="Answer" type="checkbox"> Some other option
<input name="control_1000[0][1000"123]" id="item_1000_123_0" value="308:1013" data-itemtype="Skipper" type="checkbox"> None<br>
我创建了一个小提琴来向您展示我所做的以及整个表单https://jsfiddle.net/8yf0v3xt/13/
我试图做这样的事情,但没有工作
$(:checkbox).change(function(){
var skipper = $("input:checkbox[data-itemtype='Skipper']");
if( skipper.is(":checked")){
$(this).attr('checked', false); //uncheck all the boxes for the current group
skipper.attr('checked', true); //re-check the box that caused everything to uncheck
}
}).change();
如果选择“无”,我该怎么做才能取消所有选项?
【问题讨论】:
-
@MikeA 我想这就是你想要的? jsfiddle.net/8yf0v3xt/14
-
@ketan 只是阻止点击任何具有船长项目类型的复选框。
标签: javascript jquery html checkbox