jquery允许取消提交后提交表单

Posted

技术标签:

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

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

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

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

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

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

我做错了什么??

谢谢

【问题讨论】:

【参考方案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;    
); 

【讨论】:

以上是关于jquery允许取消提交后提交表单的主要内容,如果未能解决你的问题,请参考以下文章

出现错误“由于表单未连接而取消表单提交”

用jquery控制表单提交

使用取消按钮单击提交按钮后阻止表单提交[重复]

只允许提交一次表单

防止“输入”提交表单,但允许在 textarea 字段(jQuery)[重复]

使用JQuery的.ajax()提交表单后当前页面表单内容被清空,请问如何保留数据?