2013-11-27 67 views
-1

我有我的網頁上運行下面的JavaScript:jQuery.validate:不處理被解僱

$("form").validate({ 
    invalidHandler: function (event, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
      console.log(errors); 
     } 
     validator.focusInvalid(); 
    }, 
    showErrors: function (errorMap, errorList) { 
     console.dir(errorList); 
    }, 
    submitHandler: function (form) { 
     console.log(form); 
    } 
}); 
$("form").valid(); 

我調用這個JavaScript我自己的函數裏面,而不是直接結合它的任何提交事件。

我的問題是,這些處理程序內的選項對象中沒有被傳遞到.validate()將運行;沒有任何控制檯消息被記錄。

確認確實工作,無效的字段用CSS類裝飾。

所以如果驗證正在運行,爲什麼這些事件沒有運行?

編輯:

要說<形式>元素是長將是輕描淡寫。但是,在構建/測試時,只有三個<輸入>元素具有required屬性。此外,由於我以異步方式回發而不是提交,<表格>元素沒有填充的action屬性。

<form action="" name="order" id="order" class="margin-b-50"> 

    <label for="frm-order-name">Order Name</label> 
    <input type="text" id="frm-order-name" name="frm-order-name" class="form-control" required="required" data-val-required="You must enter an order name" /> 

    <label for="frm-username">Username</label> 
    <input type="text" id="frm-username" name="frm-username" class="form-control" required="required" data-val-required="You must enter your username" /> 

    <label for="frm-password">Password</label> 
    <input type="password" id="frm-password" name="frm-password" class="form-control" required="required" data-val-required="You must enter your password" /> 
</form> 

回答

0

報價OP:

「我的問題是,沒有任何選項裏面那些處理的對象傳遞給.validate()運行;沒有控制檯消息不斷登錄驗證確實有效,那麼無效的字段會添加一個CSS類,因此如果驗證正在運行,爲什麼這些事件沒有運行?「

我不認爲這是可能的。如果驗證正在工作,那麼這些回調函數必須是纔會被觸發。

你的瀏覽器是否支持console.logconsole.dir

這種變化是工作的罰款對我來說...

$(document).ready(function() { 

    $('#order').validate({ 
     invalidHandler: function (event, validator) { 
      var errors = validator.numberOfInvalids(); 
      alert('invalidHandler fired - no of errors: ' + errors); 
      console.log('invalidHandler fired - no of errors: ' + errors); 
      validator.focusInvalid(); 
     }, 
     showErrors: function (errorMap, errorList) { 
      console.log('showErrors fired'); 
      console.dir(errorList); 
     }, 
     submitHandler: function (form) { 
      alert('submitHandler fired - form is valid'); 
      console.log('submitHandler fired - form is valid'); 
      return false; 
     } 
    }); 

    $('#order').valid(); 

}); 

DEMO:http://jsfiddle.net/B5N6q/

這是您的版本,也爲我工作:http://jsfiddle.net/B5N6q/1/