2017-06-03 15 views
2

チェックボックスと2つのラジオボタンがあります。 ラジオの変更イベントで、チェックボックスのチェック属性をtrueにしています。 これは1回だけ動作します。ラジオボタン変更イ​​ベントの後にチェックボックスがチェックされない

Demo

ところで醜いと良いチェックボックス 3.toggel(効果なし:(使用済み

のチェックを外し、それを複製するステップ、醜い上 1.クリック(チェックボックスがチェックされている) 2この上の多くの時間が、何が起こっているか把握することができませんでし

答えて

1

次のようにコードを更新します。

  1. checkedプロパティを更新するにはattr()メソッドの代わりにprop()メソッドを使用します。
  2. 変更イベントハンドラを共通にバインドし、選択したラジオボタンの値に基づいてプロパティを更新します。

// or select based on the name attribute 
 
// `$('input[type=radio][name="gender"]')` 
 
$('input[type=radio]').on('change', function() { 
 
    $('.xyz').prop('checked', this.value == 'bad'); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" name="vehicle" value="Car" class="xyz"> I have a car<br> 
 

 

 
<input type="radio" name="gender" value="good"> Good Oned<br> 
 
<input type="radio" name="gender" value="bad"> Ugly<br>

+0

ありがとう@pranav、それは機能しましたが、なぜラジオボタンごとにイベントをバインドする必要がありますか?それはブラウザの余分な作業ではありませんか?私のコードがうまくいかなかったのはなぜ、ユーザーが「悪い」を選択したときに真実になっているということですか? – 92sharmasaurabh

+0

@ 92sharmasaurabh:コード内のチェックボックスをオフにしていないので、動作させるには 'prop()'や '.attr( 'checked'、 'checked')' –

1

試してみてください。この状態.clickedラジオボタンの値が悪い場合クリックした真falseはに他の部分に表示されている代わりにattr

prop()方法を使用する必要があります。あなたattrに確認更新済み

なぜ機能しませんか?
あなたセレクタは。あなたは、あなたが他のラジオボタンをクリックした場合にのみ$('input[type=radio][value = "bad"]') .itsは チェックボックスがオフではなかっただけで選択し、両方の。だからのために悪くないラジオに ボタンを重視持って間違っていた

$(document).ready(function() { 
 
    $('input[type=radio]').on('change', function() { 
 
    $('.xyz').prop('checked', $(this).val().trim() == 'bad'); 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script data-require="jquery" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<input type="checkbox" name="vehicle" value="Car" class="xyz"> I have a car<br> 
 
<input type="radio" name="gender" value="good"> Good Oned<br> 
 
<input type="radio" name="gender" value="bad"> Ugly<br><br>

+0

@prasad、それはうまくいったのですが、なぜラジオボタンごとにイベントをバインドする必要があるのですか?それはブラウザの余分な仕事ではありませんか?私のコードがうまくいかなかったのは、ユーザーが「悪い」を選択したときに真実になっているということですか? – 92sharmasaurabh

+0

余分な仕事ではありません。イベントをバインドせずに済ませてください。値が悪いことを知ることができません。 – prasanth

+0

*セレクタが間違っていたために*なぜコードが機能しなかったのですか? =ラジオ] [値= "悪い"] ') '.'itsのみ値を選択してください。両方のラジオボタンが無効です。他のラジオボタンをクリックしてもチェックボックスがオフになっていません – prasanth

関連する問題