web-dev-qa-db-ja.com

フォーム送信チェックボックスは値を「true」ではなく「on」に設定します

こんにちは、ボタンのクリックイベントを介して送信するHTMLフォームがあります。イベントは$( "#myform")。submit();を発生させます。問題は、フォームのチェックボックスがあり、ポストされたパラメーターの下のFirebugに、期待される「mycheckbox1 true」ではなく「mycheckbox1 on」を表示することです。

ajaxを介してフォームを送信するとき、私は問題なく投稿されるデータを設定できますが、このフォームにはファイルのアップロードがあり、それを機能させるにはさまざまなハックの1つが必要です。私が使用しているものは、最終的にsubmitを呼び出します。しかし、おそらくそれは関係ありません。

いずれの場合でも、データがサーバーに到着すると、サーバーは値「on」をブール値として認識しないため、それを無視します。

どんな洞察もいただければ幸いです。

27
Raif

チェックボックスをオンにすると、value属性が送信されます。チェックされていないチェックボックスは、それ自体をフォームに送信しません。

したがって、チェックボックスのname属性がポストされているかどうかの簡単なテストで、チェックされているかどうかを判断できます。

21
alex

ええ、値が設定されていない場合、ブラウザによってチェックボックスの扱いが異なる場合があります。

サーバーは、チェックボックスがチェックされて送信されるときにサーバーがそれを理解するので、チェックボックスの値属性を明示的に「true」に設定できます。アレックスが彼の答えで示唆したように、チェックされていない場合、チェックボックスは送信されないので、この場合、サーバーはデフォルトでfalseになると思います。

6
Meligy

次の形式でchecked値を選択または送信してみてください。

$("input:checked").val()

http://jsfiddle.net/YxZRS/

1
jk.