1. ホーム
  2. jquery

[解決済み] jQueryのserializeでチェックボックスが登録されない

2023-06-14 20:06:09

質問

jQuery.serializeを使って、フォームのすべてのデータフィールドを取得しています。

私の問題は、それがチェックされていないチェックボックスを取得しないことです。

このようなものがあります。

<input type="checkbox" id="event_allDay" name="event_allDay" class="checkbox" checked="checked" />

ただし、これは

<input type="checkbox" id="event_allDay" name="event_allDay" class="checkbox" />

チェックされていないチェックボックスの値("values")を取得するにはどうしたらよいですか?

どのように解決するのですか?

jQuery serialize は、リクエストのクエリ文字列または POST ボディに追加される前に、標準的なフォームがブラウザによってシリアライズされる方法に酷似しています。 チェックされていないチェックボックスはブラウザに含められませんが、これはチェックボックスがブール値の状態を持っているため、実に理にかなっています。

もしそれがシリアライズされたものである必要があるなら、「なぜ?

もしJavaScriptがフォームデータをシリアライズする方法が、ブラウザが行う方法と異なる動作をするならば、フォームのための優雅な劣化の可能性を排除することになることを心に留めておいてください。 それでもどうしてもシリアル化が必要な場合は <select> ボックスを使い、オプションとしてYes/Noを指定します。少なくとも、JS を無効にしたユーザーがサイトから疎外されることはありませんし、HTML 仕様で定義された動作に逆らうこともありません。

<select id="event_allDay" name="event_allDay">
   <option value="0" selected>No</option>
   <option value="1">Yes</option>
</select>

過去にいくつかのサイトで採用されているのを見たことがありますが、いつも思うのです。 なぜ彼らはチェックボックスを使わないのだろう。 ?