<< Piece_Unityトラブルシューティング

input要素のtype属性がimageの場合に、フォームが再表示され次に進めない

Piece_Unityのイベント名インポート処理は、下記の順に行われます。

  1. リクエストパラメータ名?に埋め込まれたイベント名を取り出す
  2. リクエストパラメータ名?イベント名のキーがあれば、その値を取り出す

フォームの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を使うことによっても回避できるでしょう。


<< Piece_Unityトラブルシューティング

ユーザコメント

Error: Failed to load processor AddComment
No macro or processor named 'AddComment' found