如何防止表单被提交?
2022-08-30 00:00:20
我有一个表单,在某个地方有一个提交按钮。
但是,我想以某种方式“捕获”提交事件并防止其发生。
有什么办法可以做到这一点吗?
我无法修改提交按钮,因为它是自定义控件的一部分。
我有一个表单,在某个地方有一个提交按钮。
但是,我想以某种方式“捕获”提交事件并防止其发生。
有什么办法可以做到这一点吗?
我无法修改提交按钮,因为它是自定义控件的一部分。
与其他答案不同,返回只是答案的一部分。考虑在 return 语句之前发生 JS 错误的情况...false
断续器
<form onsubmit="return mySubmitFunction(event)">
...
</form>
脚本
function mySubmitFunction()
{
someBug()
return false;
}
此处返回的不会被执行,并且表单将以任何一种方式提交。您还应该调用以防止 Ajax 表单提交的默认表单操作。false
preventDefault
function mySubmitFunction(e) {
e.preventDefault();
someBug();
return false;
}
在这种情况下,即使有错误,表单也不会提交!
或者,可以使用块。try...catch
function mySubmit(e) {
e.preventDefault();
try {
someBug();
} catch (e) {
throw new Error(e.message);
}
return false;
}
您可以使用类似如下的内联事件onsubmit
<form onsubmit="alert('stop submit'); return false;" >
或
<script>
function toSubmit(){
alert('I will not submit');
return false;
}
</script>
<form onsubmit="return toSubmit();" >
现在,在制作大项目时,这可能不是一个好主意。您可能需要使用事件侦听器。
请在此处阅读有关内联事件与事件侦听器(addEventListener 和 IE 的 attachEvent)的更多信息。因为我无法比克里斯·贝克(Chris Baker)解释得更多。
两者都是正确的,但它们本身都不是“最好的”,开发人员选择使用这两种方法可能是有原因的。