我需要对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/

10-12 21:20