在一个开发项目中表单的提交没有用到网上的插件或者组件,所以的话就想写一个用于验证的公共方法,以后也可以复用:
/**
* 进行表单的基本验证
* @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 needV