我有一个表格,可以将数据发布到隐藏的<iframe>
,以防止页面发生变化。但是,我希望“保存”按钮连续执行两个submit()
,一个接一个。
<form name="updatedocform" id="updatedocform" method="post" action="http://foo.bar" enctype="multipart/form-data" target="hiddenframe">
...
<input type="submit" onclick="save(); return false;" value="Save" />
</form>
<iframe name="hiddenframe" id="hiddenframe"></iframe>
JavaScript的:
function save() {
document.updatedocform.submit();
// change some form values here
// alert("paused"); // if this alert is here, everything works fine
document.updatedocform.submit();
}
然而,在第一个加载完成之前,第二个submit()
被调用。有没有办法让第二次提交等待第一次提交?
我可以使用setTimeout()
,但我想要一个更清晰的解决方案,而不依赖于网络的速度。
答案 0 :(得分:2)
我想最基本的解决方案(循环setTimeout除外)可能是这样的,而不是save()函数
var firstSaving = false;
function save() {
document.updatedocform.submit();
firstSaving = true;
}
function secondSave() {
if(firstSaving)
{
firstSaving = false;
document.updatedocform.submit();
}
}
然后在那个iframe onload上有类似
的东西top.secondSave();
答案 1 :(得分:1)
您可以使用jquery $ .ajax()
您必须拦截第一次提交的click事件,通过ajax发送表单数据然后您可以绑定到ajax插件完整回调函数并使第二个iframe提交。
$("submit").click(function () {
$(this).closest("form").ajax({
url: "test.html",
data: $("form").serialize(),
success: function(){
//fire second submit event
}
});
});
希望这有帮助。