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。
最佳猜测:您尚未为动态添加的元素设置名称属性。