2016-09-16 132 views
-1

使用jquery validatye插件,我验证并提交表单到存储表单数据到数据库的服务器。问题是当用户双击表单时,多个请求正在进入,并且它向服务器提交了两次,并且导致多个数据库中的数据具有相同的数据。我想避免这种情况。即使用户在提交按钮上单击两次,我也希望表单仅提交一次。当用户双击提交按钮时,需要避免提交表单两次

代码:

  var validator = jQuery("#form") 
       .validate(
       { 

        errorClass : "invalid", 
        validClass : "valid", 
        submitHandler : function() { 

         //function to submit form to client 
         submitFormtoClient(); 


        }, 

当提交表单的用户点击被验证,然后提交处理函数被调用。即使提交按钮被点击过两次,我也只想要这样做。

+1

第一次设置一个标志'submitFormtoClient()'被调用 – charlietfl

+0

并且在回调结束时将set标志设置为false; –

+0

向我们展示您的'submitFormtoClient()'函数和相关的HTML。 – Sparky

回答

0

submitHandler仅在表单有效并且单击提交按钮后才被触发。如果您在第一次点击后立即禁用提交按钮,则不可能出现双击情况。

submitHandler: function(form) { // form is valid 

    // disable submit button since it was already clicked and submit is happening next 
    $('#your-submit-button').prop('disabled', true); 

    // function to submit form to client 
    submitFormtoClient(); 

} 
0

当你确定形式是有效的,应提交在“提交”,然后return true,您可以设置表单的提交按钮被禁用,而且永远不应该提交的两倍。

如果你确定它不应该提交,你会返回false。

$('.foo-form').on("submit", function(event){ 
    $(this).children('button[type=submit]').prop('disabled', true); 
    return true; 
} 

在这种情况下,我用button[type=submit]但你可以使用input[type=submit]为好。