2011-03-05 73 views
2

我是jQuery和js的總noob,我確信有一個更優雅的解決方案,然後我想出了 - 但這是我迄今爲止,我很難過。jQuery validationEngine

我有一個表單需要很長時間才能提交出於各種原因 - 我正在使用validationEngine來驗證內聯表單字段的效果很好。然後我需要添加一個彈出式窗口div來告訴訪問者請耐心等待爲什麼應用程序執行所請求的搜索。

我原來的解決方案非常好,接受彈出div顯示當訪問者點擊提交,無論表格是否完全填寫 - 它的形式是完全填寫的一切都按預期工作 - 如果他們錯過了一個領域validationEngine顯示缺少的字段通知,我彈出的div仍然顯示,但顯然表單不提交。

jQuery(document).ready(function(){ 
    jQuery("#approvalForm").validationEngine('attach'); 
}); 

    $(document).ready(function() { 
     $('#approvalForm').submit(function() { 
      $('#progress').show(); 
      }); 
     }); 

所以經過一番研究,我做了一些修改,導致驗證碼:與此代碼恰好

jQuery(document).ready(function(){ 
    jQuery("#approvalForm").validationEngine('attach', { 
     onValidationComplete: function(form, status){ 
     if (status == true) { 
      $('#approvalForm').submit(function() { 
        $('#progress').show(); 
       }); 
     } 
      } 
    }); 
}); 

而現在一切正常,只是你必須點擊兩次提交按鈕,當你彈出div彈出,但表單不提交。

+0

你碰巧有最新版本的在線地方?另外 - 請注意,如果您將「提交」處理程序附加到表單,則必須手動阻止默認事件(提交表單),例如在處理函數結束時返回'false'。 [我快速查看了插件的來源(我不知道),看起來像(不要引用我)他們會首先傳遞狀態,然後是表單(在2.0版本中) ?] – polarblau 2011-03-05 20:51:34

+0

當前版本在這裏https://www.haloadvance.com/testsite/ - 但是它提交這個之後的形式。 - 如果有幫助,我可以提供頁面的完整代碼。 – Tom 2011-03-05 22:06:25

回答

0
jQuery("#approvalForm").validationEngine('attach', { 
    onValidationComplete: function(form, status){ 
    if (status == true) { 
     $('#progress').show(); 
     $('#approvalForm').trigger('submit'); 
    }else{ 
     $('#progress').hide(); 
    } 
} 

但我認爲,如果你想顯示加載彈出,
必須使用jQuery.ajax

它有beforeSend功能,將瀏覽器之前運行發送請求。

0

onValidationComplete停止表單提交,並讓您自己處理事情。在這種情況下,您想要做的就是在驗證通過時顯示加載彈出窗口。相反,你可以做的是鉤入驗證的結果,如果已經通過顯示加載彈出窗口。表單提交將會正常激活。

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery("#approvalForm").validationEngine('attach'); 
    jQuery("#approvalForm").bind("jqv.form.result", function(event, errorFound) { 
     if(!errorFound) $('#progress').show(); 
    }) 
}); 
</script> 
2
$('#form1').validationEngine('attach', { 
    onValidationComplete: function(form, status){ 
     if (status == true) {     
      startProgressBar(); 
      form.validationEngine('detach'); 
      form.submit(); 

     } 
    }   
}); 
0

你需要

$('#approvalForm').validationEngine('attach', { 
    onValidationComplete: function(form, status){ 
     if (status) {     
      startProgressBar(); 
      YouFunctionPreLoad(); 
      return true; 
      //form.submit(); 
     } 
    }   
}); 
相關問題