2011-11-08 52 views
8

我想獲得jquery驗證插件與onkeyup或onfocusout選項一起工作。每次添加這些選項並觸發其中一個選項時,我都會遇到錯誤。如果我提交我的表單,驗證將起作用。f.settings [g] .call與任何東西都不是一個函數,但提交驗證

我真的不允許發佈我正在處理的表單,但是我用一個非常簡單的表單創建了類似的問題,我只是在子目錄static/js /下的所有j目錄中加載了一個目錄。

我使用jQuery 1.6.2和jQuery驗證1.9.0

任何人有什麼想法?

<html> 
<script type="text/javascript" src="static/js/jquery.js"></script> 
<script type="text/javascript" src="static/js/jquery.validate.js"></script> 

<script type="text/javascript"> 
$(document).ready(function(){ 

    var validator = $('#submitform').validate({ 
     rules: { 
      name: 'required', 
      phone: { 
       required: true, 
       minlength: 12 
      }, 
      team: { 
       required: true, 
       minlength: 1 
      }, 
      fax: { 
       required: true, 
       minlength: 12 
      } 
     }, 
     messages: { 
      name: 'Your name is required', 
      phone: 'Your phone number is required', 
      team: 'Your extension number is required', 
      fax: 'Your fax number is required' 
     }, 
     // the errorPlacement has to take the table layout into account 
     errorPlacement: function(error, element) { 
      if (element.is(":radio")) 
       error.appendTo(element.parent().next().next()); 
      else if (element.is(":checkbox")) 
       error.appendTo (element.next()); 
      else 
       error.appendTo(element.parent()); 
     }, 
     onfocusout: true, 
     // specifying a submitHandler prevents the default submit, good for the demo 
     submitHandler: function() { 
      alert("submitted!"); 
     }, 
     // set this class to error-labels to indicate valid fields 
     success: function(label) { 
      // set as text for IE 
      label.html(" ").addClass("checked"); 
     } 
    }); 
}); 
</script> 

<form id="submitform" action="."> 

<label for="name">Your Name:</label> 
<input id="ins_name" type="text" name="name" maxlength="40" /> 

<label for="phone">Phone:</label> 
<input name="phone" maxlength="14" type="text" id="phone" /> 

<label for="extension">Extension:</label> 
<input name="extension" maxlength="10" type="text" id="extension" /> 

<label for="fax">Fax:</label> 
<input name="fax" maxlength="14" type="text" id="fax" /> 

<input type="submit" value="Submit"> 
</form> 
+0

我會猜測onfocusout應該是一個函數。 – AutoSponge

+0

根據文檔,它只是一個選項 - http://docs.jquery.com/Plugins/Validation/validate#toptions – grantk

+0

選項是配置對象的屬性,它們的值可以是任何值。在這種情況下,我猜測這個類型應該是函數,因爲它是用於事件處理程序的(它在jQuery中很常見),而且它沒有很好的記錄(像大多數插件)。 – AutoSponge

回答

14

如上所述,文檔有缺陷。實際上,您需要將onfocusout選項設置爲接受要驗證的元素作爲參數的函數。這裏是工作的代碼示例:

$("#form").validate({ 
    onfocusout: function(element) {$(element).valid()} 
}); 
1

在我的情況下,有一個線onkeyup: true然後我改成了false

onkeyup: false 

但我仍然不知道什麼時候開始的錯誤來。 :)