我已使用confirm()
事件处理程序成功使用了JavaScript onClick
。
<input type="submit" onClick="return confirm(....);" />
我还使用confirm
onSubmit
<form onSubmit="return confirm(....);">
现在我的问题是,有一个特定的情况,我想通过不点击而只是使用document.myform.submit()
来提交表单,但是当我这样做时,它似乎绕过了onSubmit事件中的确认。 / p>
如何将document.whateverform.submit()
与confirm()一起使用?
答案 0 :(得分:1)
当用户执行触发状态更改的操作时会触发事件。当直接通过JavaScript调用.submit函数时,浏览器不能让onsubmit处理程序运行。想想这样的代码会发生什么:
<form onsubmit="if(someCondition) { this.submit(); }">
...
</form>
如果事件是从javascript驱动的提交中触发的,那将触发无限循环,因为onsubmit调用submit,调用onsubmit,等等。我知道有些人可能会怀疑这是不是一个好的模式,但我已经看过了。
你应该避免直接调用form.submit并将它们替换为对同一函数的调用,如下所示:
function confirmFormSubmission() {
return confirm('Are you sure you want to do this?');
}
function submitForm(f) {
if (confirmFormSubmission()) {
f.submit();
}
}
...
<form onsubmit="return confirmFormSubmission()">
....
</form>
JavaScript代码中调用form.submit的任何地方,将其替换为对commitForm的调用,以确保其一致地工作。