[英]Form is still submitted even though listener function returns false
I'm trying to figure out why this JavaScript doesn't stop the form from being submitted:我想弄清楚为什么这个 JavaScript 不会阻止提交表单:
<form action="http://www.example.com" id="form">
<input type="text" />
<input type="submit" />
</form>
<script>
var code = function () {
return false;
};
var element = window.document.getElementById("form");
if (element.addEventListener) {
element.addEventListener("submit", code, false);
}
</script>
Unless I add the following onsubmit attribute to the form element:除非我将以下 onsubmit 属性添加到表单元素:
<form action="http://www.example.com" id="form" onsubmit="return false">
<input type="text" />
<input type="submit" />
</form>
<script>
var code = function () {
return false;
};
var element = window.document.getElementById("form");
if (element.addEventListener) {
element.addEventListener("submit", code, false);
}
</script>
Seems like the addEventListener method alone should do the trick.似乎单独的 addEventListener 方法应该可以解决问题。 Any thoughts?
有什么想法吗? I'm on a Mac and I'm experiencing the same result on Safari, Firefox and Opera.
我使用的是 Mac,我在 Safari、Firefox 和 Opera 上遇到了相同的结果。 Thanks.
谢谢。
Combined the information from the two very helpful answers into a solution that works on both Mac and PC:将两个非常有用的答案中的信息组合成一个适用于 Mac 和 PC 的解决方案:
<script>
var code = function (eventObject) {
if (eventObject.preventDefault) {
eventObject.preventDefault();
} else if (window.event) /* for ie */ {
window.event.returnValue = false;
}
return true;
};
var element = window.document.getElementById("form");
if (element.addEventListener) {
element.addEventListener("submit", code, false);
} else if (element.attachEvent) {
element.attachEvent("onsubmit", code);
}
</script>
I think what you're looking for is the preventDefault()
method of the Event
interface for browsers that implement it.我认为您正在寻找的是实现它的浏览器的
Event
接口的preventDefault()
方法。 It will cancel the form submission in the way you expected " return false
" to.它将以您期望的“
return false
”的方式取消表单提交。
<script type="text/javascript">
var code = function (evt) {
if (evt.preventDefault) {
evt.preventDefault();
}
return false;
};
window.onload = function() {
var element = window.document.getElementById("form");
if (element.addEventListener) {
element.addEventListener("submit", code, false);
}
};
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.