Я написал некоторый JavaScript, позволяющий редактировать список элементов в форме HTML, включая добавление и удаление элементов. Получил, что работает в 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 был доволен?)