jQuery - 无法提交动态创建的表单

时间:2013-08-02 09:55:36

标签: 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并在服务器端进行验证。但我想要一个正常的提交。我做错了什么?

请帮忙。感谢。

3 个答案:

答案 0 :(得分:9)

对于动态添加的元素,请使用此表单

$(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();

另外,正如roland所建议的那样,不要使用隐藏字段的提交名称

答案 1 :(得分:8)

不要将名称submit用于隐藏字段。

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

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

答案 2 :(得分:2)

你需要使用'on';在这里试试这段代码:

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

});