2012-02-07 8 views
20

こんにちは私は、ボタンのクリックイベントを介して送信しているhtmlフォームを持っています。イベントは$( "#myform")を発生させます。 問題は、フォームにチェックボックスがあり、ポストされたパラメータの下にファイアバグがあり、 "mycheckbox1 true"ではなく "mycheckbox1 on"と表示されていることです。フォーム提出チェックボックスは、 "true"ではなく "on"に値を設定します

ajaxでフォームを送信するときに問題はありませんが、このフォームにはさまざまなハッキングが必要なファイルアップロードが設定されています。私が最終的に提出する電話を使用している。おそらくそれは関連性がありません。

いずれの場合でも、サーバーにデータが到着すると、サーバーはboolとして値 "on"を表示しないため、無視します。

洞察力があれば幸いです。

+2

チェックボックスがどのような価値がありますか? 'value'属性がない場合、' on'しか報告できません。 –

+0

はい私はこれを読んだことがありますが、不思議なことに、私が火元爆弾でチェックボックスを見ると値が表示されません。おそらく、チェックボックスが作成されたときに値をfalseに設定する必要があります。または、値の設定を手動で処理するためにグローバルonChangeイベントハンドラが必要なことがあります。 – Raif

答えて

17

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

したがって、チェックボックスのname属性が投稿されたかどうかを簡単に確認することで、チェックされているかどうかを判断できます。

+0

POSTでチェックされていないチェックボックスが送信されていないことを知りませんでした... 30分以上も同様の問題を解明しようとしていました! +1 –

6

値が設定されていないと、さまざまなブラウザがチェックボックスを異なる方法で処理することがあります。

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

+0

私は明示的に 'value =" true "'を私のチェックボックスに追加するまで、私はPlayで同様の問題を抱えていました。 – Matthew

1

はフォームでchecked値を選択したり、送信してみてください:

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

http://jsfiddle.net/YxZRS/

関連する問題