JavaScript 返回 false 不停止表单提交

标签 javascript validation

我们有一些这样的代码已经运行了一段时间。它用于提交 html 表单的按钮,除非附近的文本框为空。我直接从我们的代码中获取了这个片段;我已经更改了字段的内容,但没有删除任何内容。

<input 
    type="image" 
    name="inputName"    
    id="inputId" 
    src="someImage" 
    alt="altText"
    onclick="
        javascript:var obj = document.all ? document.all[&quot;aTextInputFormFieldId&quot;] : 
        document.getElementById(&quot;aTextInputFormFieldId&quot;); 
        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 是不够的。根据您想要完成的任务,您可能需要查看 preventDefaultstopPropagation

当使用 Internet Explorer 时,请注意事件对象不会传递给函数,而是可以在 window.event 中找到。

更新 Internet Explorer 可能希望您使用 event.returnValue = false;反而。在您的情况下,当以 IE 为目标时,这将是 window.event.returnValue = false;

祝你好运

关于JavaScript 返回 false 不停止表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950179/

相关文章:

javascript - Redux 从 Reducer 看到其他状态

javascript - 函数行为困惑

javascript - Jquery通过递归改变颜色

regex - 基于GB且仅数字电话号码的正则表达式

sql - oracle查询中如何识别主键表和外键表列数据类型和数据长度的差异

java - 如何验证 map 中的集合

javascript - 从 RadDateTimePicker 中扣除天数

javascript - 根据原始值更改输入值

validation - 为 .NET Core Identity 2.1 覆盖 UserValidator.cs 中的 ValidateAsync

jquery - 如何通过 Jquery 表单验证器单击提交后重定向页面