4.0.0 • Published 3 years ago

ar-easy-validator v4.0.0

Weekly downloads
30
License
MIT
Repository
github
Last release
3 years ago

ar-easy-validator

安装和使用

npm install --save ar-easy-validator

或者直接通过CDN

<script src="https://cdn.jsdelivr.net/npm/ar-easy-validator"></script>

什么是ar-easy-validator

之前有一个需求是,当用户填完所有的表单才会高亮按钮,若按钮置灰时,点击按钮用户还可以知道没有完成的表单项是哪些,除此之外,表单中有些内容是否是必填项取决于某一项是否符合某些条件,于是封装了这个校验器。

Github上有很多现成的校验器,这款校验器和其他校验器最大的不同在于, 它的校验规则以字面量的形式编写,比较简单且意思明了。

通过传入一个表单的值和需要校验的规则,返回校验的结果和提示消息。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ar-easy-validator demo</title>
</head>
<body>
  <script src="../dist/validator.js"></script>
  <script>
    const formData = {
        name: '姓名',
        sex: '',
        age: 18,
        isStudent: 0,
        job: ''
    };
    const formDataRules = [
        // name必须符合名字规则
        { field: 'name', name: '姓名', rules: 'isName'},
        // sex必填
        { field: 'sex', name: '性别'},
        // age大于15
        { field: 'age', name: '年龄', rules: {'>': 15}},
        // isStudent必填,可传递提示语
        { field: 'isStudent', name: '是否是学生', tip: '是否是学生是必填项'},
        // 当isStudent==1时才会去校验job字段
        { field: 'job', name: '工作', need: [{field: 'isStudent', rules: {'===': 1}}]}
    ]
    const r = Validator.validate(formData, formDataRules);
    console.log(r.res, r.msg);       // false sex is error

    // 新增自定义校验器
    Validator.addRule('isInArray', (value) => {
        return [1,2,3,4,5,6,7,8,9,0].indexOf(value);
    })
    const ohterRules = [
      { field: 'name', name: '姓名', need: [{ field: 'test', rules: 'isInArray'}]}
    ]
    const r2 = Validator.validate({name: ''}, ohterRules);
    console.log(r2.res, r2.msg);       // false name is error
    
    const r3 = Validator.validate({name: '王花花'}, ohterRules);
    console.log(r3.res, r3.msg);       // true success
  </script>
</body>
</html>

方法说明

方法名规则
isRequired必填
isEmpty是否为空
isEqual是否相等
isEmail邮箱
isMobile手机号
isConcat手机号 和 座机
isWx微信
isName姓名
isNumber纯数字
isPositiveInt是否是正整数
isBankcard银行卡
isAge年龄
isMoney金额(两位数)
isChinese是否为中文
isEnglish是否为英文
isUrlurl
isIdcard身份证
validate校验方法
addRule自定义校验方法

代码示例:

const validator = new Validator();
const res1 = validator.isName('错误的姓名');      // false
const res2 = validator.isPhone('13800138000');   // true

validate说明

const { res, msg } = validator.validate(formData, rules);

formData为一个对象,rules是校验规则。 校验规则格式如下: | 参数 | 参数说明 | 是否必填 | 格式 | | ----- | ---------------- | -------- | -------- | | rules | 校验规则 | 否 | string、object、array, 默认为isRequired | | field | key值 | 是 | string | | tip | 报错提示 | 否 | string | | need | 校验前置条件 | 否 | array |

rule规则说明

rule可支持字符串、对象和数组: | 参数类型 | 参数举例 | | ------------------ | ---------------------------------------- | | 字符串(单个校验) | rules: 'isName' | | 对象(单个校验) | rules: {'>': 2} | | 数组(多个校验) | rules: 'isMoney', {'>': 2}, {'<': 100} |

当rule为字符串时, 可传入以下参数:

校验规则名字通过条件
isRequired必填
isEmpty是否为空
isEqual是否相等
isEmail邮箱
isMobile手机号
isConcat手机号 和 座机
isWx微信
isName姓名
isNumber纯数字
isPositiveInt是否是正整数
isBankcard银行卡
isAge年龄
isMoney金额(两位数)
isChinese是否为中文
isEnglish是否为英文
isUrlurl
isIdcard身份证

当rule为对象时, 可传入以下参数:

校验方法通过条件
<小于
<=小于等于
>大于
>=大于等于
==等于
===全等于,其中NaN === NaN, +0 !== -0,还可以浅比较对象

代码示例:

const rule = {
    // 单种校验规则-字符串
    name: { rule:'isName', tip: '请输入正确的姓名' },
    // 单种校验规则-对象
    age: { rules: {'=': 2 } },
    // 多种校验规则-数组
    score: { rules: [ 'isNumber', { "==": 100 } ] },
}

need规则说明

rule相似:

const rule = {
    // 当age符合年龄校验规则时,再校验job
    job: { rule:'isReuqired', need: [{ field: 'age', rule: 'isAge' }] },
    // 当age大于等于18时,再校验job
    job: { rule:'isReuqired', need: [{ field: 'age', rule: { ">=": 18 } }] },
    // 当age符合年龄校验规则且大于等于18时,再校验job
    job: { rule:'isReuqired', need: [{ field: 'age', rule: ['isAge', { ">=": 18 }] }] }
}

addRule

代码示例:

validator.addRule('isInArray', (str) => {
   return [1,2,3,4,5,6,7,8,9,0].indexOf(str);
})

validator.isInArray('3');
validator.validate({test: 3}, rule: 'isArray');

该方法接受两个参数,第一个是校验规则的名字,第二个是校验函数。

注意: 校验规则不可命名为validateaddRule

4.0.0

3 years ago

2.0.0

3 years ago

1.2.12

3 years ago

1.2.11

3 years ago

1.2.10

4 years ago

1.2.9

4 years ago

1.2.8

4 years ago

1.2.7

4 years ago

1.2.6

4 years ago

1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago