【问题标题】:Javascript return false - from functionJavascript 返回 false - 从函数
【发布时间】:2009-08-28 15:39:09
【问题描述】:

有没有办法做到以下几点:

validateLogin();
return false;

但其实是这样的..

validateLogin();

这里是函数:

function validateLogin(){
if(hi=true){
return true;
}
else{
return false
}

我想为提交表单的事件附加这个函数,所以如果 HI 为 false - 我想返回 false;意味着它将停止提交表单。我知道返回错误;会这样做,我只需要知道如何将这个返回返回给父函数?

提前致谢!

【问题讨论】:

  • 只是一个注释;它说“如果(hi = true)......”,这不是检查相等性,而是设置变量。应该是“if (hi==true)...”,或者更好的是“if (hi)...”
  • 或者更好的是,function validateLogin() { return hi; }

标签: javascript validation forms return-value


【解决方案1】:

您可以按如下方式使用它:

return validateLogin();

但是,正如 mmayo 所指出的,不要忘记返回值:

event.returnValue = false;

【讨论】:

    【解决方案2】:

    你最终可以这样做:

    return validateLogin();
    

    请注意,您的函数代码有一些错误(可能是由于您发布此问题的代码的简化?)。你最好这样写这个方法:

    function validateLogin(){
      ...
      return hi;
    }
    

    还要注意,如果有if (hi=true) {,你必须写if (hi == true) {,或者更好的是if (hi) {...

    【讨论】:

      【解决方案3】:

      我使用以下来停止事件...

      event.returnValue = false;
      

      cresentfresh 启发我做一些研究...here is an article 与兼容性矩阵。

      还有related threads on SO。

      【讨论】:

      • 警告:您的示例仅适用于 IE。
      • 你知道我从来没有费心去检查,因为我只在我们的 Intranet 上使用过它。感谢您的信息!
      • 即使 return false 应该适用于每台机器,我的机器 REQUIRES 将 event.returnValue 设置为 false。我认为大多数机器不需要它,但重要的是要知道一小部分需要它。
      • 在我今天早上的阅读中,我看到几个线程引用了 event.returnValue 和 preventDefault 的组合使用以捕获大多数浏览器。
      【解决方案4】:
      return validateLogin();
      

      这应该做你想做的。

      【讨论】:

        【解决方案5】:

        停止事件默认动作的标准方法是:

        event. preventDefault();
        

        您可能还想使用 event.stopPropgation(); 来阻止事件传播;阻止进一步的事件侦听器执行。

        http://www.w3.org/TR/2001/WD-DOM-Level-3-Events-20010823/events.html#Events-Event

        但是,IE 无法识别这一点,这就是您可以将 IE 的 event.returnValue 设置为 false 的原因。

        例如:

        if (event && event.preventDefault) event.preventDefault();
        event.returnValue = false;
        

        您还可以从事件处理程序中为 HTML 内联的事件返回 false。

        <form onsubmit="return validateLogin()">
        

        然而,这不是最佳实践。

        注意:事件对象作为事件监听器的第一个参数传入。

        例如:

        function validateLogin(e) { 
           e; // is the event object
        }
        

        对于 IE,您可能需要 window.event。

        function validateLogin(e) { 
           e = e || window.event; // is the event object
        }
        

        【讨论】:

          【解决方案6】:

          试试 double == (IF I==5)

          【讨论】:

            【解决方案7】:

            validateLogin() 函数

            function validateLogin() {
                return hi;
            }
            

            HTML 块

            <form onsubmit="return validateLogin()">
              ...
            </form>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多