2013-10-24 197 views
2

在下面的腳本中,我試圖在不提交表單的情況下捕獲驗證引擎的成功事件(滿足所有表單元素的驗證條件)。jQuery驗證禁用提交按鈕,直到表單驗證

想法是禁用提交按鈕,直到符合驗證,然後我想啓用它。 (我見過的validationEngine示例似乎需要啓用提交按鈕才能提交表單,然後在提交後驗證其提交)

但是,我無法在我的validate中獲取「valid」方法()函數觸發。任何想法我做錯了什麼?

$(document).ready(function() { 
     /* disable the submit button until required form elements are enabled */ 
     $('#btnEcommidEdit').attr('class','button disabled'); 
     $('#btnEcommidEdit').attr("disabled","disabled"); 

     /* initiate validation */ 
     $("#form1").validationEngine(
     { 
      inlineValidation: true 
     }); 

     /* check form elements to enable submit button */ 
     $('#email2,#confirm1,#confirm2').change(function() { 
      validate(); 
     }); 
    }); 

    function validate(){ 
     var valid = $("#form1").validationEngine(); 
     if (valid) 
     $("#btnEcommidEdit").attr('disabled',''); 
     else 
     $("#btnEcommidEdit").attr("disabled","disabled"); 
     } 

回答

1
function validate(){ 
    alert("validate"); 
    var valid = $("#form1").validationEngine(); 
    alert('Validation Engine returned : ' + valid); 
    if (valid == true) { 
     $("#btnEcommidEdit").prop("disabled",false); 
     $("#form1").submit(); 
    } else { 
     $("#btnEcommidEdit").prop("disabled",true); 
     return false; 
    } 
+0

的問題是有效的變量似乎並沒有舉行validationEngine()方法的成功/失敗值。我需要在那裏進行正確的測試。 – RegEdit

+0

因此,在你的'validate()'函數中,'valid'變量返回false?然後你需要看看'.validationEngine()'方法中發生了什麼。你有沒有嘗試過「有效==真」,像這樣? – DevlshOne

+0

它返回true,無論所有驗證元素是否有效。我想我正在使用錯誤的測試。 – RegEdit

1

使用此事件捕捉,如果表單是否有效:

submitHandler: function (form) { 
    // for demo 
    if ($(form).valid()) { 
     // valid 
    } else { 
     //do some error handling 
    } 
    return false; // to not submit form 
} 

或簡單的使用$(form).valid()