0

class='cambio' のチェックボックスが多数ある検索フォームと、ID #cambio の非表示フィールドもあります。

フォームの仕組みは次のとおりです。

  1. チェックボックスがチェックされると、彼の値がこの非表示の入力に送信されます。
  2. この非表示の入力はデフォルトで無効になっており、値が設定されている場合にのみ有効になります。
  3. $_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); }
});

重複したコードがあることに注意してください。コードをスリム化する方法を知っている場合は、あらゆる提案を歓迎します。

ありがとう!

4

0 に答える 0