我想弄出一些东西。我有几个复选框,采用以下形式
<div class="checkbox">
<input name="someName1" class="checkbox styled" id="checkbox1" onclick="document.controller.setValue('/@someName1', this.checked ? '1' : '', 'someName1');" type="checkbox" value="" />
<label for="checkbox1"> SomeName 1 </label>
</div>
<div class="checkbox">
<input name="someName2" class="checkbox styled" id="checkbox2" onclick="document.controller.setValue('/@someName2', this.checked ? '1' : '', 'someName2');" type="checkbox" value="" />
<label for="checkbox2"> SomeName 2 </label>
</div>
需要控制器在我正在使用的某个系统中设置值。现在上面似乎工作,如果我检查两者,它们都记录在我的系统中。如果我检查一个然后取消选中它,则不会记录它。
问题来了,因为我只希望他们能够选择一个选项(我知道单选按钮就是这个,但我需要使用复选框)。
所以我有以下
$('input.styled').on('change', function() {
$('input.styled').not(this).prop('checked', false);
});
这使得只有一个被选中。但是,由于onclick事件,如果我选中一个复选框并选中一个不同的复选框(然后上面的代码关闭了初始代码),则两个复选框都被记录为在我的系统中被检查。
因此,我认为我需要对我的onclick事件做一些事情,如果不再检查复选框,就会以某种方式将其关闭。
我正在考虑做类似以下的事情
$('.checkbox').change(function() {
if($(this).is(":checked")) {
$value = $(this).attr("name");
document.controller.setValue('/@'+$value, this.checked ? '1' : '', 'checkbox');
}
});
因此,如果选中该复选框,则将setValue函数应用于name属性已选中它的复选框。如果不加以检查,我需要以某种方式扭转这一点。
我该怎么做呢?
由于
答案 0 :(得分:1)
我认为这就是你所需要的
{{1}}
答案 1 :(得分:1)
你可以改变这个
$('.checkbox').change(function() {
if($(this).is(":checked")) {
$value = $(this).attr("name");
document.controller.setValue('/@'+$value, this.checked ? '1' : '', 'checkbox');
}
});
到这个
$('.checkbox').change(function() {
$(".checkbox:checkbox:not(:checked)").each(function( index ) {
$value = $(this).attr("name");
document.controller.setValue('/@'+$value,'', 'checkbox');
});
if($(this).is(":checked")) {
$value = $(this).attr("name");
document.controller.setValue('/@'+$value, this.checked ? '1' : '', 'checkbox');
}
});
在为已检查项目设置值之前,您将重置所有未选中的项目。