Это очень старая реликвия эпохи HTML4, где было «своего рода ожидаемое поведение», чтобы игнорировать события указателя на дочерних элементах HTMLButtonElement.
Firefox с самого начала придерживался этого правила.
Таким образом, чтобы избежать этого, решение состоит в том, чтобы обернуть ваши элементы в нечто иное, чем :
[119 ] Но обратите внимание, что предстоящий Firefox 66 теперь будет вести себя как другие поставщики, не блокируя событие на родительской кнопке <>. Вы уже можете попробовать это из ночной ветки. [ эмиссионный доклад ]
Ваш код хорошо работает, как:
<?php
print_r($_REQUEST)
?>
<html>
<body>
<form id="myForm" method="post">
<input type="submit">
<input type="text" name="poll[question]">
<input type="text" name="poll[option1]">
<input type="text" name="poll[option2]">
</form>
<a href="javascript:addOption();">Add option</a>
<script>
var optionNumber = 3; //The first option to be added is number 3
function addOption() {
var theForm = document.getElementById("myForm");
var newOption = document.createElement("input");
newOption.name = "poll[option"+optionNumber+"]"; // poll[optionX]
newOption.type = "text";
theForm.appendChild(newOption);
optionNumber++;
}
</script>
</body>
</html>
нажмите Add Option дважды, и Вы добираетесь
Массив ([опрос] => Массив ([вопрос] => [option1] => [option2] => [option3] => [option4] =>))
Вы уверены, что не делаете ошибки здесь?
Я скопировал Ваш код на новой странице и добавил следующее к коду позади страницы ASP.NET (это должно работать над любой платформой):
protected void Page_Load(object sender, EventArgs e)
{
foreach (string p in this.Request.Params.Keys) {
if (p.StartsWith("poll")) {
Response.Write(p + " " + this.Request.Params[p] + "<br />");
}
}
}
Я добавил дополнительные поля и ввел тестовые значения, вывод ясно показывает все динамические поля ввода, отправленные назад на сервер.
Вот вывод:
poll[question] test1
poll[option1] test2
poll[option2] test3
poll[option3] test4
poll[option4] test5
poll[option5] test6
poll[option6] test7
Я просто отладил свой сайт, где у меня была подобная проблема. Для меня оказалось, что наличие моих тегов таблицы и тегов form в "неправильном" порядке вызвало проблему.
Поврежденный:
table form
Работа:
form table
Это указывает на что-то довольно важное. Браузер может представить прекрасный, и форма может хорошо работать с уродливым HTML, но можно все еще повредить вещи, как это, при наличии не правильно отформатировавший HTML. Возможно, я должен начать использовать mod_tidy!
Можно всегда сериализировать форму сами с помощью JavaScript, функционируют и затем утверждают что (использование Ajax или получить запроса или чего-то).
http://malsup.com/jquery/form/comp/