現象と仕組み

IEには input type=submit を実装していなくても、
自動でsubmitが実行される機能があります。

この機能はフォームに、type=text が1個の場合、
また type=file のみの場合に、入力項目にカーソルを合わせ
エンターを押下することにより、form action のパスにサブミットを
行います。

これにより予期せぬ動き(サブミット)を行うことがあるので回避する必要があります。
(仕事で作るアプリはだいたいjavaScriptでサブミットする・・・)

回避するには表示上認識できない type=text を埋め込みます。

<input type="text" value="" style="width:0px; border:none" readOnly="true">

回避例

type=text がひとつの場合

<html>
<head>
<head>
<body>
<form action="#">
<input type="text" value="test">
</form>
</body>
</html>

↓type=text を2個にする。

<html>
<head>
</head>
<body>
<form action="#">
<input type="text" value="test">
<input type="text" value="" style="width:0px; border:none" readOnly="true">
</form>
</body>
</html>

type=file のみの場合

<html>
<head>
</head>
<body>
<form action="#">
<input type="file" value="test">
<input type="file" value="test">
</form>
</body>
</html>

↓type=text を2個にする。
↓(1個だとfileのサブミットは防げるが、埋め込んだtext自体が
↓ サブミットできるので2個埋める)

<html>
<head>
</head>
<body>
<form action="#">
<input type="file" value="test">
<input type="file" value="test">
<input type="text" value="" style="width:0px; border:none" readOnly="true">
<input type="text" value="" style="width:0px; border:none" readOnly="true">
</form>
</body>
</html>

備考

<input type="text" value="" style="width:0px; border:none" readOnly="true">

<input type="text" style="width:0px;filter:Alpha(opacity=0);" disabled>

に置き換えても可能


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-07 (金) 16:01:32 (228d)