チェックボックス付きのフォームがあり、エラーが発生して同じビューに戻ったときにフォームを送信した後、チェックしたままにしておきたい。値属性はチェックボックスをチェックするのに役立つと聞いたので、true/falseに設定しようとしています。とにかく、入力値をクリックしても「false」のままです。正確にはどうなりますか?チェックボックスをクリックした後、値が真/偽になると思った
<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false">
<script>
$("#checkbox1").is(':checked', function(){
$("#checkbox1").attr('value', 'true');
});
</script>
質問を理解したら、チェックボックスがオンになっているかどうかに応じて、チェックボックスの値を変更します。
1つの解決策を次に示します。
$('#checkbox-value').text($('#checkbox1').val());
$("#checkbox1").on('change', function() {
if ($(this).is(':checked')) {
$(this).attr('value', 'true');
} else {
$(this).attr('value', 'false');
}
$('#checkbox-value').text($('#checkbox1').val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false">
<div id="checkbox-value"></div>
_Checked = true
_を使用します
_$("#checkbox1").prop('checked', true);
_
注:チェックボックスでイベントをonclick/onchangeするかどうかはわかりません。 is(":checked", function(){})
は質問の間違いです。
これを試して
$("#checkbox1").is(':checked', function(){
$("#checkbox1").prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false">
JSでは、チェックボックスが非常に奇妙になります。 checked
属性の存在を確認するのが最善です。 (checked
が 'false'に設定されている場合でも、古いjQueryバージョンはtrueを返します。)何かがチェックされていると判断したら、value
属性から値を取得できます。 。
jQuery.is()
functionには.is('selector', function)
のシグネチャがありません。
次のようなことをしたいと思います。
if($("#checkbox1").is(':checked')){
$("#checkbox1").attr('value', 'true');
}
この回答は、次の仮定の下で投稿します。 1) You (un)selected the checkbox on the first page and submitted the form. 2) Your building the second form and you setting the value="" true/false depending on if the previous one was checked. 3) You want the checkbox to reflect if it was checked or not before.
この場合、次のようなことができます。
var $checkbox1 = $('#checkbox1');
$checkbox1.prop('checked', $checkbox1.val() === 'true');