jQueryでラジオオプションチェックオンロードを設定するにはどうすればよいですか?
デフォルトが設定されていないかどうかを確認してから、デフォルトを設定する必要があります
jQueryでラジオオプションチェックオンロードを設定するにはどうすればよいですか?
デフォルトが設定されていないかどうかを確認してから、デフォルトを設定する必要があります
たとえば、次のようなラジオボタンがあるとします。
<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>
また、ラジオがチェックされていない場合は、値が「男性」のオンロードのものをチェックしたいとします。
$(function() {
var $radios = $('input:radio[name=gender]');
if($radios.is(':checked') === false) {
$radios.filter('[value=Male]').prop('checked', true);
}
});
ワンライナーはいかがですか?
$('input:radio[name="gender"]').filter('[value="Male"]').attr('checked', true);
これは form.reset() の失敗を引き起こします:
$('input:radio[name=gender][value=Male]').attr('checked', true);
しかし、これは機能します:
$('input:radio[name=gender][value=Male]').click();
@Amcの回答が気に入りました。filter()呼び出しを使用しないように、式をさらに凝縮できることがわかりました(@chaikoもこれに気付いたようです)。また、prop()は、jQuery v1.6 +のattr()と比較する方法です。このテーマに関する公式のベストプラクティスについては、prop()のjQueryドキュメントを参照してください。
@PaoloBergantinoの回答からの同じ入力タグを考えてみましょう。
<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>
更新されたワンライナーは次のようになります。
$('input:radio[name="gender"][value="Male"]').prop('checked', true);
名前は一意であり、グループ内のすべてのラジオは同じ名前であると想定できると思います。次に、次のような jQuery サポートを使用できます。
$("[name=gender]").val(["Male"]);
注:配列を渡すことは重要です。
条件付きバージョン:
if (!$("[name=gender]:checked").length) {
$("[name=gender]").val(["Male"]);
}
ネイティブ JS ソリューション:
document.querySelector('input[name=gender][value=Female]').checked = true;
HTML:
<input type='radio' name='gender' value='Male'> Male
<input type='radio' name='gender' value='Female'>Female
本当に動的にしたい場合、受信データに対応するラジオを選択すると、これが機能します。渡されたデータの性別の値を使用しているか、デフォルトを使用しています。
if(data['gender'] == ''){
$('input:radio[name="gender"][value="Male"]').prop('checked', true);
}else{
$('input:radio[name="gender"][value="' + data['gender'] +'"]').prop('checked', true);
};
$("form input:[name=gender]").filter('[value=Male]').attr('checked', true);
そのすべてを必要としません。シンプルで古い HTML を使用すると、目的を達成できます。次のように、ラジオをデフォルト
<input type='radio' name='gender' checked='true' value='Male'>
でオンにすると、次のようになります。ページが読み込まれると、オンになります。
上記の方法の例を次に示します。
<div class="ui-field-contain">
<fieldset data-role="controlgroup" data-type="horizontal"> <legend>Choose a pet:</legend>
<input type="radio" name="radio-choice-2" id="radio-choice-1" value="choice1">
<label for="radio-choice-1">Cat</label>
<input type="radio" name="radio-choice-2" id="radio-choice-2" value="choice2">
<label for="radio-choice-2">Dog</label>
<input type="radio" name="radio-choice-2" id="radio-choice-3" value="choice3">
<label for="radio-choice-3">Hamster</label>
<input type="radio" name="radio-choice-2" id="radio-choice-4" value="choice4">
<label for="radio-choice-4">Lizard</label>
</fieldset>
</div>
JavaScript の場合:
$("[name = 'radio-choice-2'][value='choice3']").prop('checked', true).checkboxradio('refresh');