2013-08-02 35 views
-4

我无法提交动态创建的表单。我已经尝试了很多方法,但表单没有提交。这里有几个我尝试过的方法。jQuery - 无法提交动态创建的表单

在此代码中tosubmit实际上是一个使用JSON.stringify创建的json字符串。当我使用Opera Dragonfly进行调试时,我也没有收到任何错误。我可以看到正确添加到DOM的表单。

方法1种

var frmstr = '<form id="tbl_tmpfrm" method="post" action="/test.php">'; 
frmstr +='<input type="hidden" name="submit" value="true"/><input type="hidden" name="data" value=""/></form>'; 
$('body').append(frmstr); 
$('#tbl_tmpfrm').find('input[name="data"]').val(tosubmit); 
$('#tbl_tmpfrm').submit(); 

方法2

var frmstr = '<form id="tbl_tmpfrm" method="post" action="/test.php">'; 
frmstr +='<input type="hidden" name="submit" value="true"/><input type="hidden" name="data" value="'+tosubmit+'"/></form>'; 
$('body').append(frmstr).submit(); 

我能够成功提交tosubmit,并在服务器端验证当我使用ajax。但我想要一个正常的提交。我究竟做错了什么?

请帮忙。谢谢。

+0

不要使用'submit'作为隐藏字段,这可能会导致问题。 –

+0

@roland任何建议。我只想提交2个值,而不是使用'ajax'。我愿意接受任何方法。 – bansi

+0

任何其他名字都可以。如果您有一个名为“submit”的输入元素,您就不能在表单上使用submit()。 –

回答

8

不要为隐藏字段使用的名称submit

<input type="hidden" name="submit" value="true"/> 

如果您有一个具有此名称的输入元素,则不能在表单上使用submit()。

3

对于动态添加的元素使用这种形式

$(document).on('submit','#tbl_tmpfrm',function(){}) 

编辑: 这不是什么究竟需要。 尝试添加的形式作为对象不是字符串

var frmstr = $('<form id="tbl_tmpfrm" method="post" action="/test.php"></form>'); 
$(document).append(frmstr); 
frmstr.append('<input type="hidden" name="submit" value="true"/><input type="hidden" name="data" value="'+tosubmit+'"/>'); 
frmstr.submit(); 

此外,由罗兰的建议,不使用名称提交的隐藏字段

+0

这只是添加一个事件处理程序的形式,但我想提交就好像提交按钮被点击在良好的旧的纯HTML表单。 – bansi

+0

哦,是的。对不起,忽略了这个问题。尝试编辑回答 – anu

2

你需要“上”使用;这里试试这个代码:

$("#tbl_tmpfrm").on("submit", function() { 

}); 
+0

并删除至jq 1.9 –

+0

,然后将其替换为'on',我重新编辑了我的帖子 – Momo1987