我需要对onkeyup和onsubmit进行验证。
我有一个称为CVV的字段,它接受3或4位数字,所以我使用的是'^(d){3,4}$
'。
当我在onsubmit函数中执行此模式时,此模式正常工作,但是在onkeyup函数中,即使我输入3位数字,我也总是得到false
。
<input type="text" onkeyup="callonkeyup(this,'First Name','^(d){3,4}$')" value="First Name">
function callonkeyup(tag,defaultValue,pattern){
var isValidate = validate(pattern,trim(tag.value),defaultValue);
console.log("==isValidate=="+isValidate+"==tag.value=="+tag.value+"===pattern==="+pattern);
}
function validate(pattern,value,defaultVal){
var returnValue = false;
if(value && value != defaultVal){
while(pattern.indexOf('\\\\') != -1) {
pattern = pattern.replace('\\\\', "\\");
}
var testPattern = new RegExp(pattern,"");
if (testPattern.test(value)){
returnValue = true;
}else{
returnValue = false;
}
}
return returnValue;
}
function trim(value){
return value.toString().replace(/^\s+|\s+$/g,'');
}
最佳答案
Working DEMO
您需要转义反斜杠(\
),因此您的正则表达式应为^\\d{3,4}$
而不是^(d){3,4}$
关于javascript - 验证onKeyUp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19243054/