2014-09-30 96 views
0

如果輸入與我想要的匹配,我正在使用鍵值匹配正則表達式,再次將用戶輸入與匹配。如果字段由瀏覽器自動填充,觸發jquery表單驗證

$("input[name=vat]").keyup(function(){ 
    var vatVal = $(this).val(); 
    var vatReg = /^[0-9-]{6,}$/; 
    if (!vatReg.test(vatVal)) { 
     $(this).removeClass("success"); 
     $(this).addClass("error"); 
    } else { 
     $(this).removeClass("error"); 
     $(this).addClass("success"); 
     if (!$("span[name=vaterror]").hasClass("hide")) { 
      $("span[name=vaterror]").addClass("hide"); 
     } 
    } 
}); 

但我有一個問題,一些瀏覽器預填充表單域。像Chrome一樣,如果用戶已經設置了瀏覽器設置,可以爲您預先填寫某些輸入字段。

如何在發生這種情況時觸發驗證?

+0

[Fire JQuery文本在選擇預填充值時發生更改]的可能重複(http://stackoverflow.com/questions/24198042/fire-jquery-text-change-when-selecting-prefilled-value) – 2014-09-30 08:32:16

+0

不幸的不是。因爲輸入字段永遠不會被「觸及」。這將相當於焦點法。 – madsobel 2014-09-30 08:37:31

回答

2

我認爲這是一個重複的錯誤,我將其解釋爲選擇瀏覽器建議選項,而不是頁面加載時的實際初始預填。

我非常確定,在觸發document.ready()之前,仍然無法捕獲瀏覽器預填。但你可以使用它來獲得優勢。

只需觸發您是在事件的document.ready捕不具有默認值的情況下,對所有輸入字段:

$(document).ready(function(){ 
    $('input[value!=""]').trigger('keyup'); 
}); 

此代碼沒有經過測試,你可能需要添加鍵盤代碼的事件的隨機密鑰,如果您在任何處理程序中使用它們來監聽密鑰。請參閱trigger documentation

+0

謝謝。這使我指出了正確的方向。這適合現在的目的。 http://jsfiddle.net/cmrfyq48/ – madsobel 2014-09-30 11:27:16

+0

這也行得通,但確保在完成驗證後確保清除間隔。 – 2014-09-30 11:45:28