checkboxが選択されないで送信された時の判定

Kazutoshi Shinoda 19views 更新:2016年11月8日

checkboxを選択してsubmitするとvalueが送信されます。

しかし、選択していない状態でsubmitするとvalueは{更新されない/nullになります}。

<input name="example" type="checkbox" value="T">
<!-- 
           checkedならば、value="T"
           そうでないなら、valueは更新されない
-->

◎選択していなくてもvalueを送信したい…!

そんな時はhiddenを使います。

同じname属性の値はPOST時に上書きされるので、checkboxが選択されていなければ、

以下のコードの場合valueはFがPOSTされます。

<input name="example" type="hidden" value="F">
<input name="example" type="checkbox" value="T">
<!-- 
           checkedならば、value="T"
           そうでないなら、value="F"  がPOSTされる
-->

◎でもAipoの場合は、、、

同じname属性でpostされた値は最後にpostされた値が適用される、と書いてあるサイトが多いですが、

Aipoでは最初にpostされた値が適用されるみたいです。

つまり、上のコードをそのままAipoで実装すると、checkboxが選択されて送信された時、ValueはFだと認識されます。

原因を少し調べてみました。

まず、同じname属性の値が重複してpostされた場合、rundataではname=[値1],[値2]と順番どおりに設定されています。

rundata(POSTされた値が格納されている)から、formdataに値をコピーするとき、値は一つ目の値を選択してコピーするようになっているため、

このようなことが起きています。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません