<form>タグ内のsubmitの値が送信されない

<form>内に

<input type="submit" name="submit_btn" value="送信">

のように書くと、 送信先のCGI等ではPOSTされた内容として'submit_btn=送信'が取得できる。 ASPで言うと、Request("submit_btn")の内容が"送信"になる。

これを利用して、submitボタンが押されてこのページに着たのかどうかを 判断するようなロジックをServer側で記述する場合があるが、 特定の状況ではこの内容が送信されない場合がある。

<form>内にtype="submit"以外の<input>が1つしかない場合、<input type="submit">の内容は送信されない

HTMLの仕様なのかどうなのかよく分かりませんが、とりあえず、 Windows版に関してはIE 6.0,NN 7.1共に同様の現象が起きます。

これは、<form>内に<input>が1つしかなかった場合、 暗黙的にデフォルトのsubmit用inputが作成されるっぽく、 この機能の副作用として上記現象が起こるようです。 実際、submit用inputが無く、<input type="text">が1つしかないFormでも、 Enterを押すと自動的にsubmitされます。 この機能により、submit用input以外の<input>が1つしか無かった場合、 たとえ<input type="sumit">があったとしても、 暗黙的に作成されたnameの無いsubmit用inputが優先して反応してしまい、 Server側で取得する場合に空文字となってしまう、と思われます。(多分)

回避するには、hiddenでどーでもいいinputを1つ作るとか、とにかくinputを複数作ることです。 と、言うか、むしろ本来、submitのvalueと言うものはブラウザのボタン表面に表示される文字列なので、 そんな値をロジックの分岐判断に使用せず、hiddenのinputにフラグとなる値を入れておくのが正しいのかな、 なんて思ったりもします。・・・なんてな。(いかりや)

このメソ知恵は訳に立ちましたか?

選択肢 投票
はい 82  
いいえ 33  

  • × このメソ知恵は訳に立ちましたか? -- 2016-10-13 (木) 11:02:16
  • 〇 このメソ知恵は役に立ちましたか? -- 2016-10-13 (木) 11:02:46

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White