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

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

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

有任何想法吗?

javascript:

$("#button").live('click',function add(){ $("#list").append( '
  • ' +''+ '
  • ' ); });

    Html:

      

    PHP:

      

    问题1:

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

      

    问题2:

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

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

    解决这个问题的最简单方法是使用formsprova[]来提供数组:

     $("#button").live('click',function() { $("#list").append( '
  • ' + // Removed repetitive ID and made prova an array '
  • ' ); });

    jsFiddle示例

    您正在拦截click事件并向表单添加元素,但事件已经开始,并且将完成其默认操作(提交表单)而不重新检查表单的内容。

    您应该在添加字段后停止事件(preventDefault应该是正确的选择),然后重新提交表单。

    这些方面的东西:

     $('#button').live('click', function add(event){ event.preventDefault(); $('#list').append(...); $('#form').submit(); }); 

    我没有测试过,但我很有信心它应该工作:)

    为了澄清,并抛开任何其他问题,@ Claudio的说明是正确的答案。 我只是遇到了同样的问题,按钮类型是’按钮’,新元素的名称正在动态递增。 一切看起来都很好,但添加的元素不会提交

    然后我注意到我的表格标签在表格标签内。 我把它们搬到了外面,一切按计划进行。

    有任何代码可以显示吗? 为了让php“看到”提交的变量,您必须确保它具有在表单元素上指定的“name”属性。 我有一种感觉你的问题将与jQuery而不是PHP。

    最佳猜测:您尚未为动态添加的元素设置名称属性。