【问题标题】:Stop form from submitting [closed]停止提交表单[关闭]
【发布时间】:2013-01-10 19:44:55
【问题描述】:

我使用 Bootstrap 的登录表单示例代码创建了一个注册表单,并尝试在表单操作发生之前对表单执行粗略的验证。但是,我注意到即使我return false 表单操作仍然被提交并且我被加载到表单操作页面。我怎样才能阻止这种情况发生当表单的值无效时(即:电子邮件类似于abcdef)。

这是一个小提琴:http://jsfiddle.net/CCsJn/1/

请注意,即使代码返回 false,表单也会提交。

搜索将我带到this question,但该代码对我不起作用

【问题讨论】:

    标签: javascript html forms validation twitter-bootstrap


    【解决方案1】:

    我傻了!打错字了!

    if ((email.value.length == 0) || (!validateEmail(email))){
            alert("Valid email is required.");
            elem.focus();
            return false;
    }
    

    elem.focus() 应该是email.focus()

    【讨论】:

    • 我只是回来说,当我删除该行时,它工作正常。不要心情不好。大多数时候我问别人一些事情,我在说完之前自己就想好了。
    • 您可以将您的答案标记为...嗯,答案。 :P
    • 为了将来参考,当您测试类似这样的东西时,将您的代码包装在 try/catch 中,并始终返回 false 开始,以便您可以消除过程中的未知数。在这种情况下,您的 js 抛出错误,因此无论是否通过验证,表单都会提交。这就是我的意思:jsfiddle.net/CCsJn/5
    • @oomlaut 非常感谢您的提示!
    【解决方案2】:

    在最后尝试这样的条件

    event.stopImmediatePropagation();
                event.preventDefault();
                 return false;
    

    但是为此,您必须定义一个事件 1st,这将是您的条件。 如果确切的事情没有帮助,请阅读 stopImmediatePropagation 和 preventDefault。我遇到了同样的问题,这对我有帮助

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2019-07-09
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多