class='cambio' のチェックボックスが多数ある検索フォームと、ID #cambio の非表示フィールドもあります。
フォームの仕組みは次のとおりです。
- チェックボックスがチェックされると、彼の値がこの非表示の入力に送信されます。
- この非表示の入力はデフォルトで無効になっており、値が設定されている場合にのみ有効になります。
- $_GET['cambio'] でこのフィールドのデフォルト値を取得するので、ページの読み込み時にフォームを更新し続けることができます。
問題は、ページをロードすると、非表示の入力でデフォルト値が正しく取得されますが、関連するチェックボックスがすべてオフになっていることです。
私の質問は次のとおりです。非表示の入力に値が存在する場合にのみ、これらのチェックボックスを「チェック済み」に設定するにはどうすればよいですか?
これが私のコードです:
jQuery(function($) {
$("input:checkbox.cambio").change(function() {
var newArr = $("input:checkbox.cambio:checked").map(function() { return this.value; });
$("#cambio").val(newArr.get());
if($('#cambio').val() !== "") {
$('#cambio').prop('disabled', false);
} else { $('#cambio').prop('disabled', true); }
});
});
jQuery(document).ready(function($) {
if($('#cambio').val() !== "") {
$('#cambio').prop('disabled', false);
} else { $('#cambio').prop('disabled', true); }
});
重複したコードがあることに注意してください。コードをスリム化する方法を知っている場合は、あらゆる提案を歓迎します。
ありがとう!