当用户离开页面时,我希望具有在页面上提交多个表单的功能。有这个“你想拯救吗?” 问题,到目前为止我的代码是这样的:
function checkForChanges( ) {
if (window.formform1Changed == true) {
if (window.asked == false) {
window.asked=true;
doSave = confirm("Wanna save? Click OK")
}
if (window.doSaveForms || doSave) {
window.doSaveForms = true;
document.forms.form1.submit();
}
}
if (window.formform2Changed == true) {
if (window.asked == false) {
window.asked=true;
doSave = confirm("Wanna save? Click OK.")
}
if (window.doSaveForms || doSave) {
window.doSaveForms = true;
document.forms.form2.submit();
}
}
}
它可能看起来有点矫枉过正,但它是由我们的模板引擎自动生成的,并且可以扩展到更多的形式。
身体标签:
<body
onLoad="init();
window.formform1Changed=false;
window.asked=false;
window.doSaveForms=false;
window.formform2Changed=false;"
onbeforeunload="checkForChanges();">
其中一种形式的有趣部分(另一种看起来相同:
<input value="xyz" id="la" onchange="window.formform1Changed=true;" />
<input name="save" onclick="window.formform2Changed=false; window.formform1Changed=false;" type="submit" value="save" />
现在来解决问题:
如果我更改两个表单中的值并离开页面,则会弹出第一个表单的问题。我单击确定,表单已保存,但form1.submit()
触发了一个新的 onBeforeUnload 事件,这打破了我的想法的整个逻辑。
现在的问题是,是否有一种方法可以在用户离开时只询问一次时提交页面上的所有表单?
非常感谢任何帮助!
谢谢。