submit button
猪谷と申します。
例として以下のようなフォームを作成し、どのボタンが押されたかによって飛
び先での動作を変えようとしてみました。
---x8------x8------x8------x8------x8------x8------x8------x8---
<form action="/cgi-bin/test.cgi" method="get">
<input type="text" name="some_text" />
<ul>
<li><button type="submit" name="action" value="1234">Entry1</button></li>
<li><button type="submit" name="action" value="abcd">Entry2</button></li>
<li><button type="submit" name="action" value="foobar">Entry3</button></li>
</ul>
</form>
---x8------x8------x8------x8------x8------x8------x8------x8---
これが、Gecko、lynx などでは期待通りの動作をするのですが、MSIE(試した
のは MSIE 6.0; Windows NT 5.1)からだと全く不可解な動作をします。
なぜか query_string に
some_text=dfdaf&action=Entry1&action=Entry2&action=Entry3
このような代物を吐き出してくれて、どのボタンが押されたのかを判定するど
ころか(ボタンとして書いたエントリがすべて送られてきている)、submit の
value として指定した値すら吐き出してくれません。
ここで、上の <button></button> のかわりに
<input type="submit" name="action" value="1234" />
と記述してやると、MSIE でも期待の動作(押されたボタンに該当する value
の値が action として伝わる)をしてくれるのですが、この場合ブラウザでは
submit ボタンのラベルとして value の値が表示されることになってしまいま
す。この値はユーザが見ても意味不明であるため、できるだけユーザの目に直
接触れることが無いようにしたいのです。
それでは、と
<input type="image" action="submit" src="icon.png"
alt="Entry1" name="action" value="1234" />
のようにしてみると、MSIEの場合 value で指定した値を送ってくれません。
type="image" の場合の動作として、value を送信するのが正しい動作なのか
わかりませんので、MSIEがおかしいのかどうか私には判断できませんが、とも
あれ期待の動作とはならないようです。
# Mozilla では期待通りに動くんですが。
この様に、一つのフォームで複数の submit ボタン(ボタンのラベルはその
formでの値と関係ないものが使いたい)を配置し、どの submit が押されたの
か知りたいという場合、MSIE でもきちんと動作させるにはどのように form
を書けばよいのでしょうか。
それと、Another HTML-lint に上の form を食わせると複数の submit に同一
の name が指定されているとして減点されてしまうようですが、このような指
定が HTML/XHTML の仕様から見て間違っているのかどうか、ということも教え
ていただけるとありがたいです。
すみませんが、お知恵を貸してくださいませんでしょうか。
よろしくお願いします。
--
O
o ●-● 猪谷 英一郎 == Eiichiro Itani
-ゝ emu@ceres.dti.ne.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735