猪谷と申します。

例として以下のようなフォームを作成し、どのボタンが押されたかによって飛
び先での動作を変えようとしてみました。

---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