率直に言って、以前にそのような機能のセットアップをどこで見たのかわかりません。あなたのコードはそのままで、次のように縮小できます。
$(function() { // on DOM ready (when the DOM is finished loading)
$('#optIn').click(function() { // when the checkbox is clicked
var checked = $('#optIn').is(':checked'); // check the state
$('#optIn').val(checked ? "Yes" : "No"); // set the value
});
$('#optIn').triggerHandler("click"); // initialize the value
});
value
ただし、チェックボックスの は画面に表示されません。次のように、別のフィールドを「はい」または「いいえ」の値で更新する必要がある場合があります。
<input type="checkbox" id="optIn" />
<span id="optInLabel"/>No</span>
そしてスクリプト:
$(function() { // on DOM ready (when the DOM is finished loading)
$('#optIn').click(function() {
optIn(this);
});
optIn($('#optIn')[0]);
});
function optIn(el) {
var checked = $(el).is(':checked'); // check the state
$('#optInLabel').html(checked ? "Yes" : "No"); // set the value
}
編集: jsFiddleの作業
サーバー側のポストフォーム送信でボックスがチェックされているかどうかを確認する必要がある場合は、非表示の入力フィールドを「はい」または「いいえ」の値で更新し、送信されたチェックボックス要素の値を無視することもできます (jaredhoyt
前述のとおり)。彼の答えで)。