我寫了一些Javascript以允許編輯HTML表單中的項目列表,包括添加和刪除項目。知道它在Firefox中工作。在Internet Explorer中嘗試它時,我發現任何添加的項目都沒有與表單一起提交。IE沒有提交;動態添加表單元素;這是一個IE錯誤?
長篇小說簡短...大量簡化,調試,找出哪些行觸發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很高興?)
1上避免的setAttribute。 -1的createElement-with-markup調用,這是一個非常醜陋的IE瀏覽器只有黑客。 – bobince 2009-03-04 19:22:18
我同意這是一個黑客 - 這就是爲什麼我建議海報先嚐試設置屬性。如果這不起作用,我看不到另一種方式來實現他想要發生的事情。 – levik 2009-03-04 19:36:03