All Projects → heyui → hey-validator

heyui / hey-validator

Licence: MIT license
Data validator

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to hey-validator

Routinator
An RPKI Validator written in Rust
Stars: ✭ 215 (+1435.71%)
Mutual labels:  validator
finspec-spec
Multi-protocol, machine-readable specifications for financial services
Stars: ✭ 18 (+28.57%)
Mutual labels:  validator
validation
Developer experience focused validator.
Stars: ✭ 15 (+7.14%)
Mutual labels:  validator
Clamav Validator
Laravel virus validator based on ClamAV anti-virus scanner
Stars: ✭ 224 (+1500%)
Mutual labels:  validator
guice-validator
Guice javax.validation method validation integration
Stars: ✭ 35 (+150%)
Mutual labels:  validator
garn-validator
Create validations with ease
Stars: ✭ 42 (+200%)
Mutual labels:  validator
Heyui
🎉UI Toolkit for Web, Vue2.0 http://www.heyui.top
Stars: ✭ 2,373 (+16850%)
Mutual labels:  validator
FilterInputJs
Tiny and Powerful Library for limit an entry (text box,input) as number,string or more...
Stars: ✭ 37 (+164.29%)
Mutual labels:  validator
ngx-translate-lint
Simple CLI tools for check `ngx-translate` keys
Stars: ✭ 25 (+78.57%)
Mutual labels:  validator
kontrolio
Simple standalone data validation library inspired by Laravel and Symfony
Stars: ✭ 51 (+264.29%)
Mutual labels:  validator
Stringformatter
Simple Text Formetter (Credit Card Number, Phone Number, Serial Number etc.) Can be used in all text inputs according to the format pattern. If desired, large minor character restrictions can be made in the format pattern.
Stars: ✭ 231 (+1550%)
Mutual labels:  validator
rust-phonenumber
Library for parsing, formatting and validating international phone numbers.
Stars: ✭ 99 (+607.14%)
Mutual labels:  validator
gulp-html
Gulp plugin for HTML validation, using the official Nu Html Checker (v.Nu)
Stars: ✭ 70 (+400%)
Mutual labels:  validator
Copper
A configuration file validator for Kubernetes.
Stars: ✭ 223 (+1492.86%)
Mutual labels:  validator
ATGValidator
iOS validation framework with form validation support
Stars: ✭ 51 (+264.29%)
Mutual labels:  validator
Validr
A simple, fast, extensible python library for data validation.
Stars: ✭ 205 (+1364.29%)
Mutual labels:  validator
cron-validate
A cron-expression validator for TypeScript/JavaScript projects.
Stars: ✭ 40 (+185.71%)
Mutual labels:  validator
fake-numbers
Generate fake, valid numbers. Check if a number is valid. Support a lot of different numbers: Credit card, EAN, ISBN, RTN, VIN, etc.
Stars: ✭ 51 (+264.29%)
Mutual labels:  validator
yii2-at-least-validator
Makes one or more attributes mandatory inside a set of attributes.
Stars: ✭ 28 (+100%)
Mutual labels:  validator
djburger
Framework for safe and maintainable web-projects.
Stars: ✭ 75 (+435.71%)
Mutual labels:  validator

Validator

hey-validator是配合heyui使用的表单数据验证插件,其中集成了常用且多样化的校验方式,包含单个数据校验和多个数据校验,均可进行自定义校验规则,扩展性极强,帮助你解决绝大部分表单验证情况,快速完成应用开发。

安装

npm install --save hey-validator

文档

初始化参数

{
  rules: {},          // 单个数据验证
  combineRules: {},   // 多个数据合并验证
  required:[],        // 是否必填
  int:[],             // 整数
  number:[],          // 数字
  email:[],           // 邮箱
  url:[],             // 网址
  tel:[],             // 电话号码
  mobile:[],          // 手机号
  globalmobile:[]     // 国际号码
}

示例

基础示例

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="金额" prop="amount">
      <input type="text" v-model="model.amount">
    </FormItem>
    <FormItem label="网址" prop="url">
      <input type="text" v-model="model.url">
    </FormItem>
    <FormItem label="邮箱" prop="email">
      <input type="text" v-model="model.email">
    </FormItem>
    <FormItem label="手机" prop="mobile">
      <input type="text" v-model="model.mobile">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        amount: null,
        url: null,
        email: null,
        mobile: null
      },
      validRules: {
        required: ['amount', 'url', 'email', 'mobile'],
        // 可以这样用
        rules: {
          amount: {
            type: 'number'
          }
        },
        // 也可以这样
        url: ['url'],
        email: ['email'],
        mobile: ['mobile']
      }
    }
  }

内置基础类型验证

int           // 整数
number        // 数字
email         // 邮箱
url           // 网址
tel           // 电话号码
mobile        // 手机号
globalmobile  // 国际号码

示例1

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="金额" prop="amount">
      <input type="text" v-model="model.amount">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        amount: null
      },
      validRules: {
        rules:{
          amount: {
            type: 'number',
            required: true
          }
        }
      }
    }
  }
  // 当输入字符串的结果
  {amount: 'a'}   // {a:{message: '不是正确的数字格式', type: 'base', valid: false}}

示例2

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="金额" prop="mobile">
      <input type="text" v-model="model.mobile">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        mobile: null
      },
      validRules{
        rules:{
          mobile: {
            type: 'mobile',
            required: true
          }
        }
      }
    }
  }
  //空验证
  {mobile: ''}    // {a:{message: '不能为空', type: 'base', valid: false}}
  //手机号码格式验证
  {mobile: 123}   // {a:{message: '不是正确的手机号码格式', type: 'base', valid: false}}

基础校验

  required    // 是否必填
  maxLen      // 最大长度
  minLen      // 最小长度
  max         // 最大值
  min         // 最小值 

示例:最大长度

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="长度测试" prop="a">
      <input type="text" v-model="model.a">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        a: null
      },
      validRules: {
        rules:{
          a: {
            maxLen: 5
          }
        }
      }
    }
  }
  // 长度验证结果
  {a: 'aaaaaa'}   // {a:{message: '文字长度不能超过5个字', type: 'base', valid: false}}

示例:最大值

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="最大值" prop="a">
      <input type="text" v-model="model.a">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        a: null
      },
      validRules: {
        rules:{
          a: {
            type: 'number',
            max: 9
          }
        }
      }
    }
  }
  //最大值验证
  {a: 99}   // {a:{message: '不能大于9', type: 'base', valid: false}}

自定义验证方式

示例1:正则表达式校验

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="数字" prop="a">
      <input type="text" v-model="model.a">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        a: null
      },
      validRules: {
        rules:{
          a: {
            valid: {
              pattern: /^[0-9]+$/,
              message: '请输入正确的数字格式'
            },
            max: 99
          }
        }
      }
    }
  }
  // 数字格式验证
  {a: 'a'})   // {a:{message: '请输入正确的数字格式', type: 'base', valid: false}}
  //最大值验证
  {a: 100}    // {a:{message: '不能大于99', type: 'base', valid: false}}

示例2:使用valid方法进行验证

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="valid" prop="a">
      <input type="text" v-model="model.a">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        a: null
      },
      validRules: {
        rules:{
          a: {
            type: 'number',
            valid(prop, parent, data) {
              if(prop< 0 || prop > 100) {
                  return '必须介于0至100之间'
              }
              return true;
            }
          }
        }
      }
    }
  }
  // 原生valid验证
  {a: -1}  // {a:{message: '必须介于0至100之间', type: 'base', valid: false}}

异步validAsync验证

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="validAsync" prop="a">
      <input type="text" v-model="model.a">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        a: null
      },
      validRules: {
        rules:{
          a: {
            type: 'number',
            validAsync(prop, next, parent , data){
              $.ajax('/test').then((resp)){
                if(resp.isExsit){
                  next("已存在");
                }
                if(resp.value < 0 || resp.value > 100) {
                  next('必须介于0至100之间')
                }
                next()
              }
            }
          }
        }
      }
    }
  }
  // 异步valid
  // {a:{message: '必须介于0至100之间', type: 'base', valid: false}}

多个数据合并验证

补充说明:多个数据是指combineRules对象中的refs属性中的数据,valid方法中的参数依次代表refs中的参数,顺序保持一致。

示例1

  <Form :model="model" :rules="validRules" ref="form">
    <FormItem label="数据b" prop="b">
      <input type="text" v-model="model.b">
    </FormItem>
    <FormItem label="数据c" prop="c">
      <input type="text" v-model="model.c">
    </FormItem>
  </Form>
  data() {
    return {
      model: {
        b: null,
        c: null
      },
      validRules: {
        combineRules:[{
          // parentRef: 'e[]', // 如果验证的是子级的数据,则需要定义父级
          refs: ['b', 'c'],
          valid(valueb,valuec){
            if(valueb > valuec){
              return "b不能大于c";
            }
            return true;
          }
        }]
      }
    }
  }
  // 合并验证,这里需要注意的是默认会报错在最后一个数据,也就是会在页面上对应数据的地方报错提醒
  {b: 3, c:2}   // {b:{message: null, type: "base", valid: true}} {c: {message: "b不能大于c", type: "combine", valid: false}}

示例2:子级数据验证

  data() {
    return {
      model: {
        b: null,
        c: null
      },
      validRules: {
        combineRules:[{
          parentRef: 'e[]', // 如果验证的是子级的数据,则需要定义父级
          refs: ['b', 'c'],
          valid(valueb,valuec){
            if(valueb > valuec){
              return "b不能大于c";
            }
            return true;
          }
        }]
      }
    }
  }
  // 合并验证,这里需要注意的是默认会报错在最后一个数据,也就是会在页面上对应数据的地方报错提醒
  {e:[{b: 1, c:2}, {b: 3, c: 2}]}
  // e: {message: null, type: "base", valid: true}
  // e[0]: {message: null, type: "base", valid: true}
  // e[0].b: {message: null, type: "combine", valid: true}
  // e[0].c: {message: null, type: "combine", valid: true}
  // e[1]: {message: null, type: "base", valid: true}
  // e[1].b: {message: null, type: "base", valid: true}
  // e[1].c: {message: "b不能大于c", type: "combine", valid: false}

示例3:内置合并验证规则

  // lessThan b小于c
  // greaterThan b大于c
  // equal b等于c
  {
    refs: ['b', 'c'],
    valid: {
      valid: 'lessThan',
      message: "开始时间必须小于结束时间"
    }
  }

方法

方法名 说明 参数 返回值
valid 校验方法 data,next:Function,allNext:Function
getConfig 获取相关配置 prop 对应数据的校验配置
setConfig 设置相关配置 prop, options
validField 校验部分数据 prop,data,next:Function 校验结果
destroy 销毁实例

valid

  import HeyValidator from "hey-validator"
  let validator = new HeyValidator({
    required: ['b'],
    rules:{
      b: {
        type:'int'
      }
    }
  })
  
  validator.valid({b: 3.3})   // {b: {message: "不是正确的整数格式", type: "base", valid: false}}}
  // next     异步校验只有执行的回调
  // allNext  多个异步校验全部完成之后执行的回调

getConfig

  let HeyValidator = require("hey-validator")
  let validator = new HeyValidator({
    required: ['b'],
    rules:{
        b: {
            type:'int'
        }
    }
  })
  validator.getConfig('b')   // {required: true, type: "int"}

setConfig

  let HeyValidator = require("hey-validator")
  let validator = new HeyValidator({
    required: ['b'],
  })
  let rules = {
    b: {
      type:'int'
    }
  }
  validator.setConfig('b',rules);
  validator.getConfig('b')  // {b: {type: "int"}, required: true}

validField

  let HeyValidator = require("hey-validator")
  let validator = new HeyValidator({
    required: ['b','c'],
    rules:{
      b: {
        type: 'int'
      },
      c: {
        type: 'email'
      }
    }
  })
  validator.validField('b', { b: 3.3 })  // {b: {message: "不是正确的整数格式", type: "base", valid: false}}

destroy

  let HeyValidator = require("hey-validator")
  let validator = new HeyValidator({
    required: ['b','c'],
    rules:{
      b: {
        type: 'int'
      }
    }
  })
  validator.destroy()   //{combineRuleResults: null, combineRules: null, rules: null}

相关链接

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].