javascript - jQuery 不在 .append() 之后发布表单的所有输入

标签 javascript jquery form-submit

我有一个使用 jQuery 的 .append() 方法动态生成的表单。 我可以添加任意数量的新输入、文本框、cmbbox 等...

但问题是,当我执行表单的 sumbit 时,PHP 目标不会收到添加的新输入,而只会收到连接到 append() 之前表单中已经存在的输入的变量。

有什么想法吗?


javascript:

$("#button").live('click',function add(){
   $("#list").append(
       '<li style="height:20px;">'
    +'<input type="text" class="text" id="prova" name="prova[]" value="prova">'+ 
       '</li>'
   );
});


HTML:

<input type="submit" id="button" value="Add input">
<form name = "form" id="form" action="post.php" method="POST">
   <ul style="width:670px;padding:0px 0px 30px 0px" id="list">
   </ul>
   <input type="submit" id="submit" value="Submit">
</form>


PHP:

<?php
  print_r($_POST);
?>

最佳答案

问题 1:

您的#button 不应是submit 类型,因为您只想使用它来添加到表单而不是提交表单。所以你应该:

<input type="button" id="button" value="Add input">


问题2:

您正在覆盖您的变量。 name 是与表单一起发送的变量,因此每个 input 添加都必须有一个新名称,或者变量必须是一个数组。

此外,不能有多个具有相同 id 的元素。

解决这个问题的最简单方法是使用 prova[] 的形式使 prova 成为一个数组:

$("#button").live('click',function() {
   $("#list").append(
       '<li style="height:20px;">' +
         // Removed repetitive ID and made prova an array
       '<input type="text" class="text" name="prova[]" value="prova"></li>'
   ); 
});

jsFiddle example

关于javascript - jQuery 不在 .append() 之后发布表单的所有输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3847492/

相关文章:

javascript - 将参数传递到 browser.executeScript

javascript - 扩展函数

javascript - 如何用 canvas.toDataURL 的结果替换文件输入的内容?

php - 如何阻止表单提交按钮刷新页面?

jquery - 悬停动画后无法弄清楚如何使文本出现在 div 中

Asp.Net多个提交按钮,回车只提交第一个

javascript - React 应用程序无法在 safari 浏览器中运行?语法错误

javascript - 在循环内的 AngularJs 中创建动态范围变量

javascript - 如何使用 i18n 翻译 html 中的部分文本?

Jquery在自定义函数中调用回调函数