チェックボックスを使用して、登録フォームの一部のマルチリストの有効状態と無効状態を切り替えています。チェックボックスにはカテゴリのラベルが付いており、マルチリストにはそのカテゴリに属するアイテムが含まれています。
jQuery1.7.2を使用しています。
$('#sch_cat_hockeyschools').toggle(function(ev) {
ev.stopPropagation();
$("#type_select_hockeyschools").prop("disabled", false);
$("#type_select_hockeyschools").removeProp("disabled", "disabled");
$("#sch_cat_hockeyschools").prop("checked", true);
$("#sch_cat_hockeyschools").prop("checked", "checked");
}, function(ev) {
ev.stopPropagation();
$("#type_select_hockeyschools option:selected").removeAttr("selected");
$("#type_select_hockeyschools").prop("disabled", true);
$("#type_select_hockeyschools").prop("disabled", "disabled");
$("#sch_cat_hockeyschools").prop("checked", false);
$("#sch_cat_hockeyschools").removeProp("checked");
});
対応するチェックボックスHTMLのサンプル:
<input class="catmark" type="checkbox" name="sch_categories[]" id="sch_cat_hockeyschools" value="1" />General Hockey Schools
<input class="catmark" type="checkbox" name="sch_categories[]" id="sch_cat_springhockey" value="2" />Spring Hockey
問題は、チェックボックスをクリックしても、チェックボックスがオンになったりチェックされたりしないことです。stopPropagation()
すぐにチェックされていない状態に戻ります。これは、関数が役立つと思いました。どうやらそうではありません。マルチリストは期待どおりに有効または無効になりますが、チェックボックスがオンになりません。
この問題の結果、フォームが送信されると、選択されたカテゴリを含む配列が空になります。したがって、少なくとも1つのチェックされたカテゴリがフォームの必須フィールドであるため、フォームを処理するPHPスクリプトは、必須フィールドが空白のままであることを通知するエラーの1つをスローします。
チェックボックスが実際にチェックされていることを確認し、ひいては実際のデータを処理スクリプトにPOSTする方法についてのアイデアはありますか?
みんなありがとう。