アイテムの追加や削除など、HTML フォーム内のアイテムのリストを編集できるように、いくつかの JavaScript を作成しました。Firefoxで動作するようになりました。Internet Explorer で試してみると、追加された項目がフォームと共に送信されていないことがわかりました。
簡単に言えば...多くの単純化、デバッグ、IEが新しいフォーム入力を無視するようにトリガーしている行を見つけました。したがって、動作の問題は解決されます。
しかし今、私は尋ねなければなりません:なぜですか?これはIEのバグですか?
簡略化されたコードは次のとおりです。
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function add() {
div = document.getElementById("mylist");
// *** Adding text here works perfectly fine. ***
div.innerHTML += " ";
e = document.createElement("input");
e.setAttribute("type", "text");
e.setAttribute("name", "field3");
e.setAttribute("value", "--NEWVALUE--");
div.appendChild(e);
// *** Adding text here works perfectly fine in Firefox, but for
// Internet Explorer it causes field3 to not be submitted. ***
//div.innerHTML += " ";
}
</script>
</head>
<body>
<form action="" method="get">
<div id="mylist">
<input type="text" name="field1" value="value1" />
<input type="text" name="field2" value="value2" />
</div>
<a href="javascript:" onclick="add()" />Add</a>
<input type="submit" value="Submit" />
</form>
</body>
</html>
それを試すには、当然のことを行います。IE をロードし、[追加] をクリックし、[送信] をクリックして、アドレス バーの内容を確認します。の最後の行のコメントを外すとadd()
、IE はレポートを突然停止しfield3
ます。Firefox ではどちらの方法でも問題なく動作します。
何か案は?好奇心旺盛な心は知りたがっています。(そして、必要に応じて移植可能な方法でそこにテキストを追加して、IE が満足するようにするにはどうすればよいでしょうか?)