【发布时间】:2014-08-01 02:28:09
【问题描述】:
我有以下简单的形式:
<form action="" id="myForm">
Use <code>return false</code> (if not checked,
<code>e.preventDefault()</code> will be used):
<input type="checkbox" id="myCheckbox" checked>
<br/>
<input type="submit" value="Submit me">
</form>
那么,JavaScript 方面:
document.getElementById("myForm").addEventListener("submit", function (e) {
if (document.getElementById("myCheckbox").checked) {
return false;
}
e.preventDefault();
});
为什么return false不会阻止默认行为,而e.preventDefault() 按预期工作?
根据this answer:
return false在你调用它时正在做 3 件不同的事情:
event.preventDefault();event.stopPropagation();- 停止回调执行并在调用时立即返回。
所以,event.prevendDefault() 被调用。这是否仅在 jQuery 回调中发生?
【问题讨论】:
-
仅在 jQuery 中,是的,但在 vanilla JS 中没有。
-
@Teemu 这也是我的猜测。我一直认为
return false是由浏览器处理的,而不是由jQuery处理的。 -
您也可以阅读您指定的问题的已接受答案。
标签: javascript jquery forms submit preventdefault