記録方法は、自分自身を書くことを検証フォームデータに使用します

 プラグインのか、検証のための一般的な方法を書きたかったのであれば、オンラインコンポーネントを使用していない、と彼らは多重化されるの形で開発プロジェクトを提出してください:

/**
 * 进行表单的基本验证
 * @param {IRule[]} rules 验证的规则数组
 * @param {IValues} values 表单数据对象
 */
export interface IRule{
    name: string;
    type: string;
    pattern?: RegExp;
    errMsg: string;
    required: boolean;
}

export interface IErrObj{
    name:string;
    msg:string;
}

export interface IValues{
    [prop:string]:any;
}

export function validate (rules:IRule[],values:IValues){
    if( rules.length <= 0) return;
    if( Object.keys(values).length <= 0 ) return;

    const valuesName = Object.keys(values);
    const needValidateRule = rules.filter(item => valuesName.includes(item.name));
    
    if(needValidateRule.length <= 0) return;

    const errObj:IErrObj={
        name:'',
        msg:'',
    };

    const flag = valuesName.every(valueItem => {
        return needValidateRule.every(ruleItem => {
            const { name, required = false, type = 'string', pattern, errMsg } = ruleItem;
            if(valueItem === name){
                if(typeof values[valueItem] !== 'object' && typeof values[valueItem] !== 'undefined' && typeof values[valueItem] !== type){
                    errObj.name = valueItem; 
                    errObj.msg = '类型错误';
                    return false;
                }
                if(typeof values[valueItem] === 'object' && type === 'array'){
                    if(!(values[valueItem] instanceof Array)){
                        errObj.name = valueItem; 
                        errObj.msg = '类型错误';
                        return false;
                    }
                }
                if(required && (values[valueItem] === '' || values[valueItem] == null)){
                    errObj.name = valueItem; 
                    errObj.msg = '该项为必填项';
                    return false;
                }
                if(pattern && !pattern.test(values[valueItem])){
                    errObj.name = valueItem; 
                    errObj.msg = errMsg || '该项填写错误';
                    return false;
                }
                return true;
            }
            return true;
        })
    })
    if(!flag){
        return errObj;
    }else {
        return true;
    }
}

これらは、あなたが直接コピーを使用することができ、完全なコードです、私はあなたが何か問題を見つけた場合、コメントは歓迎し、ちょうど予備試験でした

 

公開された47元の記事 ウォン称賛38 ビュー60000 +

おすすめ

転載: blog.csdn.net/qq8241994/article/details/103158764
おすすめ