0 Star 0 Fork 75

clang / validator.js

forked from MinJieLiu / validate-framework 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

#Validator.js

Build Status npm version

一款轻量、强大、无依赖、前后端通用的 JavaScript 验证组件

Demo: http://minjieliu.github.io/Validator.js/example

特性

  1. 轻量、无依赖
  2. 可选核心组件
  3. 前后端通用
  4. umd 支持
  5. es2015 语法
  6. 相同 name 的表单验证
  7. 动态验证
  8. 兼容 chrome 、firfox 、IE9 +

注意:若要兼容 IE6+ 浏览器,请使用 v2.1.1

快速上手

通过 npm 安装

npm install validate-framework --save

基本用法:

<form id="validate_form">
    <div class="form-group">
        <label for="email">邮箱:</label>
        <input class="form-control" id="email" name="email" type="email" placeholder="请输入邮箱" />
    </div>
    <div class="form-group">
        <label for="phone">手机:</label>
        <input class="form-control" id="phone" name="phone" type="text" placeholder="请输入手机号" />
    </div>
    <input class="btn btn-primary" id="submit" type="submit" value="提交" />
</form>
import validateFramework from 'validate-framework';

const validator = new validateFramework({
    formName: 'validate_form',
    fields: {
        email: {
            rules: 'required | isEmail | maxLength(32)',
            messages: "不能为空 | 请输入合法邮箱 | 不能超过 {{param}} 个字符"
        },
        phone: {
            rules: 'isPhone',
            messages: "手机号: {{value}} 不合法"
        }
    },
    callback: function(errors, event) {
        // 阻止表单提交
        validator.preventSubmit();
        // do something...
    }
});

<form> 用法:

<div class="form-group">
    <label for="email">邮箱:</label>
    <input class="form-control" id="email" name="email" type="email" placeholder="请输入邮箱" />
</div>
import validateFramework from 'validate-framework';

const validator = new validateFramework({
    fields: {
        email: {
            rules: 'required | isEmail | maxLength(32)',
            messages: "不能为空 | 请输入合法邮箱 | 不能超过 {{param}} 个字符"
        }
    },
    callback: function(errors, event) {
        // do something...
    }
});
// 手动触发验证
validator.validate();

服务端用法:

import validateFramework from 'validate-framework';

var bodyData = {
    email: "example#example.com",
    birthday: "2012-12-12"
};
var validator = new validateFramework({
    bodyData: bodyData,
    fields: {
        email: {
            rules: 'required | isEmail | maxLength(32)',
            messages: "不能为空 | 请输入合法邮箱 | 不能超过 {{param}} 个字符"
        },
        birthday: {
            rules: 'required | isDate',
            messages: "不能为空 | 请输入合法日期"
        }
    },
    callback: function(errors, event) {
        // do something...
    }
});
// 手动触发验证
validator.validate();

字符串验证:

import validateFramework from 'validate-framework';

var v = new validateFramework();
v.isEmail('example@qq.com');
v.isIp('192.168.1.1');
v.isPhone('170111222231');
v.lessThan('11', '22');
v.greaterThanDate('2010-01-02', '2010-01-01');

说明文档

new validateFramework(options)

参数(可选,无参为字符串验证)

options (可选) 是 Validator 的第二个参数

  • formName (可选) 是 <form> 中的 name 或者 id 的值
  • bodyData (可选) 此参数用作 express 服务端的数据接收入口。此参数与formNameerrorPlacement 等 DOM 相关的参数不可同时存在
  • fields (可选) 表单验证域 rulesmessages 集合,后续可通过 .addMethod(name, method).removeFields(fieldNames) 进行变更
  • errorPlacement (可选) 错误信息位置,默认位置为表单元素的后一个元素
  • callback (可选) 表单提交 或 .validate() 调用后触发
  • prefix (可选) 验证正确或错误 class 或 id 前缀,默认 valid
  • errorEl (可选) 验证错误创建的元素,默认 em
  • eventLevel (可选) 用户编辑表单后 触发事件级别,有三种参数可选: off 不监听,change 监听改变事件, all 监听输入事件和改变事件,默认 all

参数示例

fields

fields: {
    email: {
        rules: 'required | isEmail | maxLength(32)',
        messages: "不能为空 | 请输入合法邮箱 | 不能超过 {{param}} 个字符"
    },
    phone: {
        rules: 'isPhone',
        messages: "手机号: {{value}} 不合法"
    }
}

bodyData : 遵循为 express 的 body-parser 表单数据格式:{email: "example#example.com", birthday: "2012-12-12"}

注: emailphone 为表单 name 属性
rules :(必选) 一个或多个规则(中间用 | 分隔)
messages :(可选) 相对应的错误提示(中间用 | 分隔) {{value}} 为表单中的 value 值, {{param}}maxLength(32) 的参数

errorPlacement

errorPlacement: function(errorEl, fieldEl) {
    // 非 label 、radio 元素
    if (fieldEl.parentNode !== undefined) {
        fieldEl.parentNode.appendChild(errorEl);
    }
},

注: errorEl 为错误信息节点,fieldEl 为验证的表单节点 验证失败后,表单中会添加 valid-error , 错误信息中添加 valid-error-message 类名

callback

callback: function(errors, event) {
    // 自定义逻辑
    if (errors) {
        // do something...
    }
}

注: event 当前事件
errors 验证失败的错误 json 集合。表单验证成功, errors 的值为 null

方法

  • 除返回值为 Boolean 类型的方法都支持链式调用

.validate() 手动验证

返回值为 Boolean
注: 默认使用 submit 按钮提交进行拦截验证,可手动调用 .validate() 调用验证所有定义过的元素

如:

if (validator.validate()) {
    // do something...
};

.validateByName(name) 手动验证单个表单域

返回值为 Boolean
注: 默认使用表单改变事件拦截验证,当使用 js 方法改变表单的值时,可手动调用 .validateByName(name) 进行验证单个域
name 参数为 表单域的 name 属性,

.preventSubmit() 阻止表单提交<form> 的表单验证,则参数无效

.addMethod(name, method) 自定义验证方法

注: 当遇到默认方法无法实现验证的时候(大多数情况),添加.addMethod(name, method)方法进行扩展
name 为校验名称,格式: isDate
method 为自定义方法

如:

// checkbox 至少选择两项 方法
// 扩展内部验证方法 field: 验证域, param: 参数 如 selectLimit(2)
validator.addMethod('selectLimit', function(field, param) {
    // checkbox 至少选择两项
    var checkedNum = 0;
    for (var i = 0, elLength = field.el.length; i < elLength; i++) {
        if (field.el[i].checked) {
            checkedNum += 1;
        }
    }
    return checkedNum >= param;
});

.onInputEvent(name, level) 绑定用户输入事件和改变事件

注:name name 属性, level 事件级别:有三种参数可选: off 不监听,change 监听改变事件, all 监听输入事件和改变事件,默认 all
如:ajax 验证不需要很高的触发频率,可设置为 changeoff 进行手动验证

.addFields(fields) 动态添加 fields 方法

注: 满足更多动态验证表单的需求。可通过 .addFields(fields) 来动态新增一个或多个表单验证域,参数和上述 fields 用法一样

validator.addFields({
    userName: {
        rules: 'required | is_real_name',
        messages: "不能为空 | 请输入真实姓名"
    }
});

.removeFields(fieldNames) 动态移除 fields 方法

注: 满足更多动态验证表单的需求。可通过 .removeFields(fieldNames) 来动态移除一个表单验证域,移除之后,验证器不验证该元素
fieldNames 类型为 Array

// 移除单个
validator.removeFields(['userName']);
// 移除多个
validator.removeFields(['userName', 'email']);

其他

  1. [动态验证] 当 field 验证条件存在,DOM节点不存在时,如果 field 包含 required 条件,则最终验证不通过,否则通过验证。
  2. [事件监听] 如果动态验证中,新增节点,默认不会有表单监听,这时需 手动调用 .onInputEvent(name, level) 添加监听,无 <form> 表单默认无监听
  3. [错误信息] 错误位置提示信息,checkboxradio 元素对于 label 元素的位置不固定,各个 UI 组件不统一,默认不设置

内置验证方法

如:

v.isEmail('example@qq.com');
v.isPhone('170111222231');
  • required(param) 验证必填
  • isAbc(param) 验证字母数字下划线
  • isDate(param) 验证日期
  • isDecimal(param) 验证浮点数
  • isEmail(param) 验证邮箱
  • isInteger(param) 验证整数
  • isIp(param) 验证 ip 地址
  • isNumeric(param) 验证自然数
  • isPhone(param) 验证手机
  • isTel(param) 验证座机
  • isUrl(param) 验证URL
  • maxLength(param, length) 最大长度
  • minLength(param, length) 最小长度
  • greaterThan(param1, param2) 多于某个数
  • lessThan(param1, param2) 少于某个数
  • greaterThanDate(date1, date2) 大于某个日期
  • lessThanDate(date1, date2) 小于某个日期

验证方法不够? .addMethod(name, method) 添加自定义验证方法(与表单验证自定义方法类似)

备注

  1. 组件只包含验证实现,不包括 UI,因此 UI 部分可以自由发挥
  2. 可选核心组件,脱离dom及事件的支持
  3. 不依赖 jQuery 及其他类库,可结合 jQuery 及其他类库使用

##与 2.x.x API 变更

  1. 使用 es2015 语法重构、webpack 工程化
  2. 验证方法名称调整为驼峰式语法
  3. 为 IE9+ 浏览器而设计,若兼容低版本浏览器,请使用 v2 版本

规范

validate-framework 使用 eslint 来保持代码的正确性和可读性,详情见 .eslintrc 文件

更新日志

v3.0.0

  1. [新增] 使用 es2015 语法重构、webpack 工程化
  2. [调整] 验证方法名称调整为驼峰式语法
  3. [调整] v3 为 IE9+ 浏览器而设计,若兼容低版本浏览器,请使用 v2 版本

v2.1.1

  1. [新增] 表单验证成功 class
  2. [调整] 邮箱验证调整为 w3c 提供的正则

v2.0.1

  1. 解决一些 bug

v2.0.0

  1. [新增] 服务端验证
  2. [新增] 无 验证
  3. [修改] formName 为非必选项
  4. [修改] 多处重构
  5. [修改] 调整 API

v1.4.1

  1. [修正] 执行 .removeFields 方法后,应删除对应的错误域
  2. 变更 email 正则
  3. 注释修正

v1.4.0

  1. [新增] .addFields.removeFields 扩展方法
  2. 实现动态验证表单域
  3. 微调内部函数结构

v1.3.0

  1. [新增] 相同 name 属性表单验证
  2. 兼容未在 dom 中的元素,可预先定义
  3. 微调内部函数名称

LICENSE

MIT

The MIT License (MIT) Copyright (c) 2016 MinJie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一款轻量、强大、无依赖、前后端通用的 JavaScript 验证组件 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/clang2708290/validator.js.git
git@gitee.com:clang2708290/validator.js.git
clang2708290
validator.js
validator.js
master

搜索帮助