2011-11-09 30 views
0

所以現在我有結構是這樣的一個輸入驗證方法:您可以自動將JavaScript與基於CSS類的DOM元素相關聯嗎?

function validate(element, regex); 

「元素」是輸入DOM元素和「正則表達式」是正則表達式的方法檢查用戶的輸入對。如果輸入與正則表達式不匹配,則輸入元素輪廓變爲紅色。如果用戶輸入有效,則輪廓變回黑色。

有沒有辦法把這個函數和一個CSS類關聯起來,這樣每個有這個類的元素都會自動調用這個函數?

<input type="text" id="text_field" class="yearvalidate"/> 

所以類「yearvalidate」將發送一個正則表達式來驗證(),其限制了輸入到4個位數。這將自動完成,而不是顯式編寫Javascript來調用驗證文本字段。

有沒有辦法做到這一點,或者我必須在Javascript中進行顯式調用?

+1

這就是大多數jQuery驗證插件的工作原理。你給一個元素一個像'required'或者'email'這樣的類,並且在表單提交(或者onblur)上提供驗證觸發器。看看這個插件:http://jquery.bassistance.de/validate/demo/ – swatkins

回答

2

使用jQuery:

$('input').each(function(i,e) { 
    var regex = getRegex($(e).attr('class')); 
    if (regex) validate(e, regex); 
}); 

你必須創建另一個功能getRegex()車削 'yearvalidate' 到/\d{4}/雖然。

function getRegex(classname) { 
    switch(classname) { 
     case 'numbervalidate': 
     return /\d+/; 
     break; 
     case 'yearvalidate': 
     return /\d{4}/; 
     break; 
    } 
} 
0

你可以做這樣的事情 -

$('.yearvalidate').change(function() { 
    //check value using your regex 
}); 

這將掛鉤一個觸發間隔與類「yearvalidate」元素失去焦點時間的函數。

0

您需要某種框架來爲您進行佈線。我的建議是使用jQuery將任何具有類「yearvalidate」的元素的更改綁定到驗證函數。

$(function() { 
    $('.yearvalidate').change(validate); 
}); 
相關問題