我无法提交动态创建的表单。我尝试了很多方法,但表单没有提交。以下是我尝试过的几种方法。
在此代码中,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 :(得分: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() {
});