【问题标题】:jquery allow form submission after cancelled submissionjquery允许取消提交后提交表单
【发布时间】:2012-06-11 10:56:37
【问题描述】:

我有一个 jquery 函数,它控制表单的所有必填字段都已填写,如果其中一个必填字段为空,它将取消提交。

取消表单提交工作正常,问题是当我在提交失败后提交表单时它仍然取消表单提交,当它应该允许提交因为所有表单都正确填写时,这里是代码:

-Cancel 是一个布尔值,指示是否所有表单字段都已填写。

    if (cancel) 
    {
        $('#form_login').submit(function () 
        { 
            return false;   
        }); 
    }
    else
    {

        $('#form_login').submit(function () 
        { 
            return true;
        }); 
    };

我做错了什么??

谢谢

【问题讨论】:

    标签: jquery forms submission


    【解决方案1】:

    您最好从提交方法中调用您的验证代码。例如,一个执行一些验证并返回 true 或 false 的方法。您可以将该值作为提交方法返回值返回。

    例如:

    $('#form_login').submit(function ()  
    {  
       return isMyFormValid();    
    });
    
    function isMyFormValid(){
      //return true or false depending on some conditions.
    }
    

    【讨论】:

    • @AlbertPrats:很好,没问题!
    【解决方案2】:
    if(cancel) {
       $('#form_login').submit();
    } else {
      return false;
    }
    

    【讨论】:

      【解决方案3】:

      问题是您多次将函数附加到表单的提交事件。第一次,当验证失败时,附加return false; 方法,然后每次提交表单时都会调用此函数,即使您稍后附加另一个函数(当验证成功时)。

      你想做的是:

      $('#form_login').submit(function() {
          //define the value of 'cancel' here
          return cancel;
      }
      

      如果你已经在提交事件中附加了一个函数并且想要覆盖它,你必须先移除已经附加的函数:

      $('#form_login').off('submit');
      

      然后附加新函数。

      【讨论】:

        【解决方案4】:

        试试api 的建议怎么样:

        $('#form_login').submit(function () 
        { 
                if (cancel) {return false;} 
                return true;    
        }); 
        

        【讨论】:

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