Javascript / JQuery设置复选框的值,同时禁用其他人

时间:2015-12-17 14:00:03

标签: javascript jquery checkbox

我想弄出一些东西。我有几个复选框,采用以下形式

<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属性已选中它的复选框。如果不加以检查,我需要以某种方式扭转这一点。

我该怎么做呢?

由于

2 个答案:

答案 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');
      }   
    });

在为已检查项目设置值之前,您将重置所有未选中的项目。