2013-11-15 160 views
3

一旦點擊按鈕,想要阻止提交到本地存儲,如果沒有填寫任何必填字段。兩個功能都能正常工作只是如果$("#formID").validationEngine();找到一個未完成的必填字段,就試圖防止LocalStorage.save()被擊中。jQuery驗證引擎後防止提交

<form id="formID" name="myForm">  

<input class="validate[required]" type="text" id="agree" name="agree"/>   
<button type="submit" value="Save" id="Save" onclick="clicked();">Submit Survey</button> 

</form> 

<script type="text/javascript"> 
    function clicked() { 
     if (confirm('Are you sure you want to submit?')) { 

      $("#formID").validationEngine();    
      my.LocalStorage.save(); 

     } else { 
      return false; 
     } 
    } 
</script> 
+2

是否'validationEngine(:我添加e爲需要event通過傳遞參數

function clicked (e) { if (confirm('Are you sure you want to submit?')) if ($("#formID").validationEngine('validate')) my.LocalStorage.save(); e.preventDefault(); } 

拿筆記)'返回一個通過/失敗布爾? –

+0

我相信如此,但不完全確定。 https://github.com/posabsolute/jQuery-Validation-Engine/blob/master/js/jquery.validationEngine.js – user1

+0

@Scott否,但'validationEngine('validate')' – Ennui

回答

3

從他們的文檔在http://posabsolute.github.io/jQuery-Validation-Engine/

驗證


驗證表單或場,顯示錯誤相應地提示。
返回爲真如果表單生效,如果它包含錯誤。

它被反轉爲字段,它在驗證上返回false,在錯誤上返回true。

當使用表單驗證使用Ajax,它返回未定義,所述 結果經由功能options.onAjaxFormComplete異步傳送。

// form validation 
alert($("#formID1").validationEngine('validate')); 

// field validation 
alert($("#emailInput").validationEngine('validate')); 

因此,這將更改您的代碼:

<button type="submit" value="Save" id="Save" onclick="clicked(event);"> 
    Submit Survey 
</button> 
+0

這兩個函數似乎都沒有打。只是在js確認之後重新加載頁面 – user1

+1

也許這是由於您沒有將'e'傳遞給函數並使用'e.preventDefault()'。我更新了代碼。我認爲這應該工作。你必須更新'onclick =「clicked();」'on'onclick =「clicked(e);」'我也相信。 –

+0

現在它甚至沒有達到js證實。沒有e在onclick =和以前一樣。 – user1