2015-05-21 41 views
2

Jquery驗證沒有檢查它是否爲真,同時按下按鍵。它從元素聚焦後觸發。重點完成驗證檢查後,按下鍵開始。爲什麼是這樣?這裏有我的代碼jQuery驗證不按下按鍵時觸發

$('input[name=roleName]').keypress(function() { 

     $('form').validate({ 
      rules: { 
       roleName: { 
        required: true, 
        isRoleUsed: true 
       } 
      }, 
      messages: { 
       roleName: { 
        required: "You have to enter role name" 
       } 
      } 
     }); 

    }); 
+0

您的驗證開始在按鍵事件功能。這是什麼你的代碼告訴 –

+0

是的但我按鍵我的功能不啓動。聚焦後開始。基本上我想在按任意鍵的同時啓動我的功能 – top11

+0

jQuery Validate插件不是jQuery驗證引擎。選擇標籤時請多加小心。編輯。謝謝。 – Sparky

回答

2

.validate()方法永遠不會進入按鍵事件處理程序。它只是插件的初始化方法,只能在DOM就緒事件處理程序中進行。

然後,在插件初始化後,會自動捕獲keyup事件。

$(document).ready(function() { 

    $('form').validate({ 
     rules: { 
      roleName: { 
       required: true, 
       isRoleUsed: true 
      } 
     }, 
     messages: { 
      roleName: { 
       required: "You have to enter role name" 
      } 
     } 
    }); 

}); 

DEMO:http://jsfiddle.net/9hf0pr6a/1/

注意,默認情況下,驗證是「懶」,這意味着你得到一個嘗試填寫表格的required驗證規則進行評估之前。在第一次點擊提交按鈕之後,纔會捕獲事件keyup

否則,您可以通過覆蓋onkeyup選項將keyup行爲更改爲「Eager」驗證。

$(document).ready(function() { 

    $('form').validate({ 
     onkeyup: function(element) { 
      this.element(element); 
     }, 
     rules: { 
      roleName: { 
       required: true, 
       isRoleUsed: true 
      } 
     }, 
     messages: { 
      roleName: { 
       required: "You have to enter role name" 
      } 
     } 
    }); 

}); 

DEMO:http://jsfiddle.net/9hf0pr6a/