使用过很多的验证插件,总是没有一个特别让我满意,要么规则配置复杂,要么样式更改麻烦,这种大而全的框架在特定的环境下是很有用的,可以帮忙节省大量时间,可在一些定制性要求高的场景下,却总是不够灵活,依赖各种环境和框架,于是,还是来自己动手封装一个简单的工具吧。
做纯数据验证,不操作相关DOM与事件注册,规则配置方便,简单易用。
下面是这个工具的介绍和使用:
依赖ES6的 Promise
,如果需要低版本浏览器支持,请使用 dist/lite-validator-es5.js
安装
npm install lite-validator --save |
ES6 引用
import { validForm, validValue, validField } from 'lite-validator' |
AMD 引用
var liteValidator = require('lite-validator'); |
浏览器引用
<script src="../lite-validator/dist/lite-validator-es5.js" type="text/javascript"> |
API
极简的API,记住下面这三个API,走遍天下,验证我不怕😏
validForm
验证整个表单
validField
验证单个字段
validValue
验证单个数值
validValue
做纯数据的验证,返回 true
或 false
validValue(value, ruleName, pms)
或 validValue.ruleName(value, pms)
value
数值ruleName
规则名称pms
规则的参数,可以是多个,具体参数见下面的默认规则
validValue.required(' ')//false |
validField
用于表单中 单个字段 的验证,可以 组合
多种规则,异步验证
某个字段
validField (formEl, field, rules)
formEl
表单的DOM对象field
可以是字段的 name
名称,也可以是字段的DOM对象rules
规则数组
let i = 0; |
validForm
用于验证整个表单,默认是遇到验证失败时就停止验证
validForm(formEl, fieldsRules, validAll)
formEl
表单DOM对象fieldRules
所有字段的验证配置validAll
是否一次性验证所有字段
|
验证成功
返回成功字段的验证信息
如果是遇到错误就停止,则返回一个对象 {el:inputObj, field:fieldName}
如果是一次性验证所有字段,则返回这个对象组成的数组
验证失败
如果在验证过程中失败,出现异常,则返回异常对象
如果是验证规则失败,则返回,失败的字段信息对象 {el:inputObj, msg:errmsg, field:fieldName}
如果是一次性难所有字段,则返回这个对象组成的数组
内置规则
常用正则
必填项
- required 字段必填
整数
- integer 整数
- integer(+) 正整数
- integer(+0) 正整数和零
- integer(-) 负整数
- integer(-0) 负整数和零
长度
- length(n) 请填写 n 个字符
- length(n~) 请至少填写 n 个字符
- length(~n) 请最多填写 n 个字符
- length(n1~n2) 请填写 n1 到 n2 个字符
选择数量 Checkbox
- checked 必选
- checked(n) 必选 n 项
- checked(n~) 至少选择 n 项
- checked(~n) 最多选择 n 项
- checked(n1~n2) 选择 n1 到 n2 项
选择范围
- range(n~) 请填写不小于 n 的数
- range(~n) 请填写不大于 n 的数
- range(n1~n2) 请填写 n1 到 n2 的数
过滤
- filter 过滤
<>"'\
和字符实体编码的字符
过滤隐藏字段和禁用字段
在验证表单时,会先过滤出配置的字段中,不是隐藏或禁用的字段,禁用的字段主要判断,主要判断该表单控件是否有属性 disabled
或 class disabled
自定义规则与提示
在表单验证中,可以配置组合多个验证规则,可以配置验证失败的错误提示,如果不设置,也可以使用默认规则中的配置的提示信息, 如果默认配置中没有,则取该字段的 placeholder
'uName':[ |
提示的优先级
自定义的提示 > 默认规则的配置 > placeholder
CodePen示例
See the Pen KNrmWQ by LT (@togglelt) on CodePen.
源码
Github仓库 欢迎来给我提ISSUES