我尝试使用通用验证函数,但我认为长度验证有问题:该函数在第二个输入上工作,但在第一个输入上不起作用,你可以在 jsFiddle 上看到:
======> http://jsfiddle.net/RochesterFox/N2HyE/1/
的HTML:
<input type="text" name="number" class="verify" conditions="requierd numeric"/>
<input type="text" name="number2" class="verify" conditions="requierd lenght:5 numeric"/>
的JavaScript:
function getVal(field, array){
arr = jQuery.grep(array, function (value) {
search = field;
if(value.match(search)) return true;
return false;
});
var vals = arr[0].split(':');
return vals[1];
}
$('.verify').blur(function(){
var conditions = $(this).attr('conditions').split(' ');
var state = [];
if ($.inArray('requierd', conditions) > -1){
if($(this).val() === '') state.push('invalid');
else state.push('valid');
}
else $(this).removeClass('invalid').addClass('valid');
if ($.inArray('numeric', conditions) > -1){
if($.isNumeric($(this).val()) === false) state.push('invalid');
else state.push('valid');
}
if(getVal('lenght', conditions) != ''){
if($(this).val().length < getVal('lenght', conditions)) state.push('invalid');
else state.push('valid');
}
if(($.inArray('invalid', state) > -1) === false){
$(this).removeClass('invalid').addClass('valid');
verif();
}
else{
$(this).removeClass('valid').addClass('invalid');
}
});
function verif(){
var state = 'none';
$('.verify').each(function(){
if($(this).hasClass('invalid')) state = 'invalid';
});
if(state != 'invalid'){
//VALID !
$('body').append('VALIDATED');
}
}