Bootstrap / Javascript - 选中一个复选框,否则取消全选

时间:2016-08-24 08:07:33

标签: javascript php ajax

我需要一些帮助,因为我被卡住了。

基本上我有这个:

$(function() {
$('.turn_on').on("click", function () {
var checked = $(this).is(':checked');
var $otherChecks = $('.check_1, .check_2');
$otherChecks.removeAttr('disabled', checked);
});
});

$('.turn_on').change(function () {
if(this.checked){
var $otherChecks = $('.check_1, .check_2');
$otherChecks.removeAttr('disabled', checked);
}else{
var checked = $(this).is(':checked');
var $otherChecks1 = $('.check_1, .check_2');
$otherChecks1.removeAttr('disabled', checked);
}
});

<form method="post">
<label class="checkbox"><input type="checkbox" name="turn_on" value="turn_on" class="turn_on">Turn on</label>
<br>
<label class="checkbox"><input type="checkbox" name="check_1" value="check_1" class="check_1" disabled>Option 1</label>
<label class="checkbox"><input type="checkbox" name="check_2" value="check_2" class="check_2" disabled>Option 2</label>
<button type="submit" class="btn btn-primary" name="submit">Save</button>
</form>

第一个脚本工作正常,但带有“更改”的脚本不起作用。 基本上这是做什么的,当用户选中“turn_on”框时,它“无法使用”所有其他复选框。

我也有正确的所有div和脚本。 只是代码不适用于变更。

1 个答案:

答案 0 :(得分:0)

怎么样:

   $('.turn_on').on('change', function(){
      if($(this).prop("checked")){
        var $otherChecks = $('.check_1, .check_2');
        $otherChecks.removeAttr('disabled', checked);
      }else{
        var checked = $(this).is(':checked');
        var $otherChecks1 = $('.check_1, .check_2');
        $otherChecks1.removeAttr('disabled', checked);
     }
   });

如果你说代码有效,但改变功能没有?尝试上面的代码,并评论是否仍有问题?

你错过了&#34;这个&#34;

周围的$()

编辑 - 新的答案。 当启用/禁用时,你应该使用prop()insted - 我为你创建了一个小提琴,它在那里检查和取消选中。

$(function() {
 $('.turn_on').on('change', function(){
  if($(this).prop("checked")){
    var $otherChecks = $('.check_1, .check_2');
    $otherChecks.prop('disabled', false);
  }else{
  console.log('unchecked');
    var checked = $(this).is(':checked');
    var $otherChecks1 = $('.check_1, .check_2');
    $otherChecks1.prop( "disabled", true );
 }
 });
});

如果我误解了你,你仍然希望它总是删除残疾人,那么只需将其设置为true,而不是false。 另外,如果你想删除复选标记,只需支持(&#34;检查&#34;,false); 测试的小提琴在这里:https://jsfiddle.net/embtpspL/1/