単一のチェックボックスでチェックされていないと値が送信されない
<input type="checkbox" name="hoge" value="1">
たとえば上記のような単一のチェックボックスでON・OFFのようなチェックを作ったとする。
チェックのある場合は問題ないのだが、チェックを外してsubmitするとサーバー側で今回でいうとhoge
というkeyで値が取得できない。
これは当然の仕様なのだが、ON・OFFのような場合、サーバー側で値が取れたほうが処理が楽になる。
チェックしていないことを検知するには
<input type='hidden' value='0' name='hoge'>
<input type="checkbox" name="hoge" value="1">
のようにcheckboxの前にhiddenで同じ名前のinputタグを作成します。
inputは後ろのもので上書きされるので、
- チェックされている場合
- checkboxがサーバーに送信
- チェックされていない場合
- hiddenがサーバーに送信
といった具合で、希望通りの値がサーバーに送信されます。
このやり方はスタックオーバーフローで支持を得ているようなので問題ないかと思いますが、なにか弊害があるとしたらご教示いただきたいです。