FLYING

/* TODO: 気の利いた説明を書く */

IEでフォームのsubmitがうまく動かないときの対処法

<form action="./hoge.php" method="post">
<input type="password" name="password" />
<input type="submit" name="login" value="ログイン" />
</form>

こういう感じのパスワードを入力してログインするフォームを作ったとき,InternetExplorerではパスワードを入力した後でエンターキーを押してsubmitしても「login=ログイン」というパラメータが送られない場合がある。ページの挙動から察するに,submitはされているけどsubmitボタンに設定されているnameとvalueのペアが送信されないようだ。おそらくIE6でも7でも8でも再現。不具合というよりはIEの仕様らしい。

この現象はフォーム内にテキストボックスが1つしかないという条件の下で発生するようなので,次のようにして見えないテキストボックスを増やしてあげれば動く。

<form action="./hoge.php" method="post">
<input type="password" name="password" />
<input type="text" name="dummy" style="display:none;" />
<input type="submit" name="login" value="ログイン" />
</form>

ただし,次のようにinput要素のtype属性をhiddenにしてもうまくいかなかった。

<form action="./hoge.php" method="post">
<input type="password" name="password" />
<input type="hidden" name="dummy" />
<input type="submit" name="login" value="ログイン" />
</form>