我们有一些这样的代码已经运行了一段时间。它用于提交 html 表单的按钮,除非附近的文本框为空。我直接从我们的代码中获取了这个片段;我已经更改了字段的内容,但没有删除任何内容。
<input
type="image"
name="inputName"
id="inputId"
src="someImage"
alt="altText"
onclick="
javascript:var obj = document.all ? document.all["aTextInputFormFieldId"] :
document.getElementById("aTextInputFormFieldId");
if(obj.value.length == 0)
{
alert('It is 0!');
return false;
};"
style="someStyle" />
(原始代码全部在一行中,但为了清晰起见,此处添加了换行符)。
它似乎在 Firefox 中完美运行。但在 IE 中,它以我无法理解的方式失败:如果输入字段 (aTextInputFormFieldId) 为空,它会发出警报,但在用户单击警报上的确定按钮后无论如何都会提交表单。
当我在整个页面上做了一个查看源码,并复制到本地时,似乎完美无缺;它要么提交表单,要么发出警报,然后拒绝提交。
我目前最好的(但仍然很糟糕)的理论是,其中一个包含的 JavaScript 库正在做一些有趣的事情,这可以解释为什么它在真实网站上失败了,但是当我在本地复制它时却失败了(因为我没有抓取它正在导入的各种库。)这是合乎逻辑的,我也会通过抓取库来检查它,但我很难想象这些库会做什么来搞砸(或为什么).. .它们只是普通的实用程序库,如 jquery、实用程序函数等。
那么有人对这里可能发生的事情有理论吗?
最佳答案
您提到了 jQuery,如果 jQuery 通过其 submit()
handler 执行任何操作,它可能会干扰您的表单。 .检查 jQuery.submit()
是否绑定(bind)到您的表单。
通常在执行纯 javascript 时返回 false 是不够的。根据您想要完成的任务,您可能需要查看 preventDefault
或 stopPropagation
当使用 Internet Explorer 时,请注意事件对象不会传递给函数,而是可以在 window.event
中找到。
更新
Internet Explorer 可能希望您使用 event.returnValue = false;
反而。在您的情况下,当以 IE 为目标时,这将是 window.event.returnValue = false;
。
祝你好运
关于JavaScript 返回 false 不停止表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950179/