2016-11-08 12 views
0

フォームには2つのフィールドがあり、1つはラジオボタン、もう1つはチェックボックスです。私はラジオボタンの値が第私のコードであるとき、チェックボックスのチェックを外す(チェックする)と読み取り専用にしたいことはチェックされない機能のために働いているが、読み取り専用私チェックボックスを読み取り専用にする方法

助ける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"]:not(:checked) ')。attr(' disabled '、true); – Bugfixer

+0

注:input要素を 'disabled'にすると、フォームと共にそれを送信しません。したがって、 'checked'チェックボックスも' disabled'チェックボックスがチェックされていないかのように動作します。これはこの質問の目的のためには問題ありませんが、一般的なケースでは問題ありません。 –

答えて

0

チェックボックスを無効にすることができます。無効なチェックボックスは読み取り専用です。入力をするためにdisabledプロパティを使用し

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

ありがとう、これは動作しています私のため –

+0

入力を無効にするためにHTMLの代わりにjQueryを使用する利点は何ですか? ''を使用しない理由 – Trix

1

それを無効にするには

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

読み取り専用

$('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

チェックボックスは 'input [value =" no "]'の直後(したがって '.next()')に置かれるとは限りません。 – 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ごとに、チェックボックスは読み取り専用でなければならない答えは** NO **です。ユーザーがオプションを** No **から** Yes **に変更したい場合はどうなりますか? – 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", 
       }); 
      } 
     }); 
関連する問題