input要素のtype属性がimageの場合に、フォームが再表示され次に進めない
Piece_Unityのイベント名インポート処理は、下記の順に行われます。
- リクエストパラメータ名?に埋め込まれたイベント名を取り出す
- リクエストパラメータ名?にイベント名のキーがあれば、その値を取り出す
フォームのinput要素のtype属性値に、submitの代わりにimageを使うことがあります。その場合、src属性値の画像をクリックした座標がそれぞれ埋め込まれた2つのパラメータが送信されます。例えば、下記のようなボタンの場合、
<input type="image" src="images/submit.gif" name="_event_confirmForm" value="confirm" />
- _event_confirmForm_x=X座標の値
- _event_confirmForm_y=Y座標の値
というパラメータが送信されることになります。(筆者の手元のFirefox 2.0.0.1ではsubmitと同様に、_event_confirmForm=confirmも送信されます。)
input要素のtype属性値がimageの場合に、フォームが再表示され次に進めない、といった現象は、下記の条件を満たす場合に発生することを確認しています。
- Internet Explorer 6
- フォームのsubmitボタンがinput type="image"である
- input type="text"の要素がひとつしかない(他のtypeの要素の有無は問わない)
- フォームのテキストボックス内で、Enterキーを押下することによってフォーム内容を送信する
Firefoxの場合、画像をクリックする場合も、Enterキーを押下する場合も座標値以外はまったく同じパラメータが送信されますが、Internet Explorer 6では_event_confirmForm_xも_event_confirmForm_yも送信されません。よって、hidden要素にイベント名を設定していない場合を除いて、フレームワーク実行環境はイベント名を取得できず、単に現在のステート?のビュー?を返します。結果として、フォームから先へは一切進めないことになります。
不幸にもこのようなフォームを扱う必要に迫られた場合は、hidden要素にイベント名を設定することで、この問題を回避することができます。あるいは、JavaScriptを使うことによっても回避できるでしょう。
ユーザコメント
