2016-11-08 62 views
0

我有一个窗体与两个字段之一是单选按钮,第二个是复选框。我想让复选框取消选中(如果选中)和只读当单选按钮值。我的代码正在为选中的功能,但只读不work.Please帮我如何使复选框只读

这是我的代码:

HTML:

<input type="radio" name="data[User][email_status]" id="" value="yes">Yes&nbsp;&nbsp; 
<input type="radio" name="data[User][email_status]" id="" value="no" checked="checked">No 
<input type="checkbox" name="data[User][no_alerts]" id="" value="yes"> 

jQuery代码:

$(document).ready(function() { 
    $('input[name="data[User][email_status]"]').change (function(){ 
     //console.log($(this).val()); 
     if ($(this).val() == 'no') { 
      $('input[name="data[User][no_alerts]"]').attr({ 
       'checked' : false, 
      }); 
     } 
    }); 
}); 

感谢

+0

尝试禁用的复选框 – Steve

+0

示例:$('输入[类= “busiProp”]:否(:选中)禁用”,真); ')ATTR('。 – Bugfixer

+0

注意:使一个输入元素'disabled'不会将其与表单一起提交。因此,一个'checked'复选框也被禁用,就好像它没有被选中一样。对于这个问题(鉴于描述),这是很好的,但对于一般情况来说并不合适。 –

回答

0

您可以禁用该复选框。禁用的复选框是只读的。

$("input[name="data[User][no_alerts]"]").attr("disabled", true); 

要禁用它

1
$('input[name="data[User][no_alerts]"]').attr({ 
       'disabled' : true, 
      }); 
+0

非常感谢,这是工作对我来说 –

+0

使用jQuery而不是HTML来使输入被禁用有什么好处?为什么不使用'' – Trix

1

使用禁用的属性,以使输入只读

$('input[value="no"]:checked').next().prop("disabled", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="radio" name="data[User][email_status]" id="" value="yes">Yes&nbsp;&nbsp; 
 
<input type="radio" name="data[User][email_status]" id="" value="no" checked="checked">No 
 
<input type="checkbox" name="data[User][no_alerts]" id="" value="yes">
或更一般的方法

$('input[value="no"]:checked').parent().find('input[type="checkbox"]').prop("disabled", true); 
+0

复选框不一定放在(因此'.next()')'input [value =“no”]'之后。您可能想在您的回答中考虑一定程度的普遍性 – Trix

+0

@Trix我不想:) – madalinivascu

0

您可能喜欢这个代码段:

$(function() { 
 
    var chk = $('input[name="data[User][no_alerts]"]');//got check-box 
 
    $('input[name="data[User][email_status]"]').on('change', function(e) { 
 
    chk.prop('disabled', false); //enable first 
 
    if ('no' == this.value) { 
 
     chk.prop({ 
 
     'disabled': true, 
 
     'checked': false 
 
     }); 
 
    } 
 
    }); 
 
    $('input[name="data[User][email_status]"]:checked').trigger('change');//fire code on page load 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="radio" name="data[User][email_status]" id="" value="yes">Yes&nbsp;&nbsp; 
 
<input type="radio" name="data[User][email_status]" id="" value="no" checked="checked">No 
 
<input type="checkbox" name="data[User][no_alerts]" id="" value="yes">

+0

当答案为YES时,复选框不是只读 – Trix

+1

@Trix,根据OP,复选框需要只读答案是**否**。现在,如果用户想要将他/她的选项从**否**更改为**是**,该怎么办? – Arvind

+0

你是对的。 – Trix

0

此也可以使用

$('input[name="data[User][email_status]"]').change (function(){ 
      //console.log($(this).val()); 
      if ($(this).val() == 'no') { 
       $('input[name="data[User][no_alerts]"]').attr({ 
        'checked' : false, 
        'disabled':"disabled", 
       }); 
      } 
     });