💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ## 核心参数 ### **debug - 调试** **类型**:`Number` **默认**:`0` **可用值**: * `0`:关闭调试信息 * `1`:开启调试信息(查看浏览器控制台) * 2`:开启调试,无视验证结果直接触发验证通过事件 ### **timely - 实时验证** **类型**:`Number` **默认**:`1` **可用值**: * `0`:关闭实时验证,只在提交表单的时候执行验证 * `1`:输入框失去焦点(focusout)时执行验证 * `2`:输入框改变值(input)时执行验证 * `3`:输入框失去焦点和改变值(综合 1 + 2) (`v0.8.0+`) * `8`:同 2,并且详细提示每个规则的结果 (`v0.9.0+`) * `9`:同 3,并且详细提示每个规则的结果 (`v0.9.0+`) * 大于 100 的数值:验证延迟时间 ### **theme - 主题** **类型**:`String` **默认**:`"default"` 主题名称,每个表单验证实例可以设置不同的主题。参考[自定义主题](https://validator.niceue.com/docs/custom-themes.html),以及 zh-CN.js 的主题配置 ### **stopOnError - 在第一次错误时停止验证** **类型**:`Boolean` **默认**:`false` ### **focusInvalid - 第一个错误字段自动获得焦点** **类型**:`Boolean` **默认**:`true` ### **focusCleanup - 输入框获得焦点时清除验证消息** **类型**:`Boolean` **默认**:`false` ### **ignoreBlank - 不验证空值的字段(只针对实时验证)** **支持**:`v0.8.0+` **类型**:`Boolean` **默认**:`false` ### **ignore - 忽略验证 jQuery 选择器选中的字段** **类型**:`jqSelector` **默认**:`""` **示例**: ~~~javascript //任何不可见的元素,都不作验证 $('form').validator({ ignore: ':hidden' }); //id为tab2下的所有子元素都不作验证 $('form').validator({ ignore: '#tab2' }); //动态改变要忽略验证的元素 $('form').data('validator').options.ignore = '#tab1'; ~~~ ### **display - 自定义消息中`{0}`的替换字符** **类型**:`Function(elem)` **默认**:`null` **示例**: ~~~javascript $('form').validator({ display: function(elem){ return $(elem).closest('.form-item').children('label:eq(0)').text(); } }); ~~~ ### **target - 自定义消息的显示位置** **类型**:`Function(elem) | jqSelector` **默认**:`null` **描述**:验证当前字段,但是实际上在 target 的元素上提示错误消息。 1、如果目标元素是输入框(input,textarea、select),将会以目标元素为基准点,插入一条消息; 2、如果目标元素是**消息占位**(class="msg-box"),这和直接使用消息占位没有区别; 3、其他情况下,直接显示在target指向的**消息容器**中。 消息容器与消息占位的区别:消息占位只能包含一条消息,消息容器可以容纳很多消息。 **示例**: ~~~javascript $('form').validator({ // 自己指定消息容器位置 target: function(elem){ var $formitem = $(elem).closest('.form-item'), $msgbox = $formitem.find('span.msg-box'); if (!$msgbox.length) { $msgbox = $('<span class="msg-box"></span>').appendTo($formitem); } return $msgbox; } }); $('form').validator({ // 将所有消息全部提示在 id 为 myContainer 里面 target: "#myContainer" }); ~~~ ### **valid - 表单验证通过时调用此函数** **类型**:`Function(form)` **默认**:`null` **描述**:表单验证成功后的回调。也可以使用[valid.form](https://validator.niceue.com/docs/events.html#section-1-2)事件 **示例**:ajax 提交表单 ~~~javascript $('#form1').validator({ fields: { username: "required; email|mobile; remote(/check/username)", password: "required; length(6~16)", passwordAgain: "match(password)" }, valid: function(form){ // 表单验证通过,提交表单 $.post("path/to/server", $(form).serialize()) .done(function(d){ // some code }); } }); ~~~ ### **invalid - 表单验证不通过时调用此函数** **类型**:`Function(form, errors)` **默认**:`null` **描述**:表单验证失败后的回调。也可以使用[invalid.form](https://validator.niceue.com/docs/events.html#section-1-3)事件 **示例**:摇晃提交按钮(需要[animate.css](http://daneden.github.io/animate.css/)支持) ~~~javascript $('#form1').validator({ invalid: function(form, errors){ var CLS_ANIMATE = 'shake animated'; $('#submitBtn').addClass(CLS_ANIMATE) .one('animationend webkitAnimationEnd mozAnimationEnd', function(){ $(this).removeClass(CLS_ANIMATE); }); } }); ~~~ ### **validation - 验证每个字段后调用此函数** **类型**:`Function(form)` **默认**:`null` **描述**:验证完每个字段时的回调。也可以使用[validation](https://validator.niceue.com/docs/events.html#section-1-1)事件 **示例**:只有在全部字段都验证通过时,提交按钮才可用 ~~~javascript $('#form1').validator({ validation: function(element, result){ $("#submitBtn").prop('disabled', !element.form.isValid) } }); ~~~ ### **rules - 自定义规则** **类型**:`Object` **默认**:`null` **示例**:自定义用于当前实例的规则,支持两种定义方式 ~~~javascript $('form').validator({ rules: { // 自定义验证函数,具有最大的灵活性 myRule: function(el, param, field){ //do something... }, // 简单配置正则及错误消息 another: [/^\w*$/, 'Please enter the letters or underscore.'] }, fields: { //调用前面定义的两个规则 foo: 'required; myRule[param]; another' } }); ~~~ ### **messages - 自定义消息** **类型**:`Object` **默认**:`null` **描述**:自定义用于当前实例的规则消息。当有多个字段使用同一个规则,而这个规则没有消息或需要覆盖它的消息,则使用 messages 统一配置比较方便。消息中可以包含`{0}`模板变量,会自动替换成 display 的值 **示例**: ~~~javascript $('form').validator({ messages: { required: "Please fill in this field", email: "Please enter a valid email address.", }, fields: { 'email': 'required;email;' } }); ~~~ ### **fields - 配置字段规则及参数** **类型**:`Object`\- 待验证的字段集合,键为字段的 name 值或者 #id **默认**:`null` **参数**: * fields\[key\].`rule` 字段规则,多个规则用分号 “;” 分隔,支持使用圆括号 “( )” 或者方括号 “\[ \]” 传参 * fields\[key\].`msg` 自定义字段中每个规则的错误消息 * fields\[key\].`tip` 自定义获得焦点时的友好提示信息 * fields\[key\].`ok` 自定义字段验证成功后显示的消息 * fields\[key\].`valid` 字段验证通过的回调 * fields\[key\].`invalid` 字段验证失败的回调 * fields\[key\].`timely` 是否启用实时验证,默认继承 * fields\[key\].`target` 验证当前字段,但是实际上在 target 的元素上提示错误消息, 如果目标元素是输入框(input,textarea、select),将会以目标元素为基准点,插入一条消息; 如果目标元素是消息占位(className 为 msg-box),这和直接使用消息占位没有区别 其他情况下,直接显示在target指向的容器中 * fields\[key\].`dataFilter` 使用 dataFilter 回调可以转换 ajax 返回的结果为 nice-validator 支持的格式 * fields\[key\].`must` 是否强制验证该字段 * fields\[key\].`msgWrapper` 自定义该字段的消息容器的标签名 * fields\[key\].`msgMaker` 自定义该字段的消息生成器 * fields\[key\].`msgClass` 自定义该字段的消息Class * fields\[key\].`msgStyle` 自定义该字段的消息 CSS 样式 * fields\[key\].`getValue`(`v1.0.0+`) 自定义 value 的 getter * fields\[key\].`setValue`(`v1.0.0+`) 自定义 value 的 setter **示例**:快捷传参和对象传参 ~~~javascript fields: { //name 字段使用对象传参 name: { rule: "姓名: required; rule2; rule3", msg: { required: "请填写姓名", rule2: "xxxx", rule3: "xxxx" }, tip: "填写真实姓名有助于朋友找到你", ok: "", timely: false, target: "#msg_holder" }, //email 和 mobile 字段使用快捷传参 email: "required; email", mobile: "mobile" } ~~~ ### **beforeSubmit - 在提交表单之前调用此函数** **类型**:`Function(form)` **默认**:`null` 一次 submit 事件触发的流程: 1. 接收 form 的 submit 事件; 2. 执行 beforeSubmit 回调,如果 beforeSubmit 返回值为 false,将取消本次验证与提交; 3. 验证整个表单; 4. 根据表单验证结果决定执行 valid 回调还是 invalid 回调 ### **dataFilter - 转换ajax返回数据为插件支持的格式** **类型**:`Function(data)` **默认**:`null` **示例**:如果服务端返回格式无法更改,可以用[dataFilter](https://validator.niceue.com/docs/options.html#section-1-18)参数转换 ~~~javascript /* 假设服务端返回结果为: {"status":600, "msg":"名字已被占用"} */ $('#form1').validator({ dataFilter: function(data) { if (data.status === 200) return ""; else return data.msg; }, fields: { name: "required; length(4~12); remote(/user/check/name)" } }); ~~~ * * * ## 主题相关参数 ### **showOk - 是否显示成功提示** **类型**:`Boolean|String` **默认**:`true` 是否显示成功提示(注意:前提是有传ok的消息),如果设置成false在字段验证通过后将只是简单的隐藏消息。 还有另一种用法:如果传递一个字符串,在验证通过后将提示这个消息,如果设置成空字符串,将只显示一个成功的图标 ~~~javascript //字段验证通过后提示“正确” $('form').validator({ showOk: "正确" }); //对于simple_right主题,验证通过后默认不会提示,只是单纯的隐藏错误消息 //加上 showOk: "" 这个配置后,将显示一个通过的图标 $('form').validator({ theme: "simple_right", showOk: "" }); ~~~ ### **validClass - 给验证通过的输入框添加的class名** **类型**:`String` **默认**:`n-valid` ### **invalidClass - 给验证不通过的输入框添加的class名** **类型**:`String` **默认**:`n-invalid` ### **bindClassTo - 设置 validClass 和 invalidClass 添加到的位置** **支持**:`v0.9.0+` **类型**:`jqSelector` **默认**:`:verifiable` **示例**:适配[Bootstrap](http://v3.bootcss.com/css/#forms-control-validation)样式 ~~~html <form id="form1"> <div class="form-group"> <label for="email">Email address</label> <input type="email" name="email" id="email" class="form-control" placeholder="Email"> </div> </form> ~~~ ~~~javascript $('#form1').validator({ validClass: "has-succes", invalidClass: "has-error", bindClassTo: ".form-group", fields: { email: "required; email" } }); ~~~ ### **formClass - 主题的 class 名称,添加在 form 上** **类型**:`String` **默认**:`n-default` ### **msgClass - 字段消息的 class 名称,添加在消息容器上** **类型**:`String` **默认**:`n-right` **示例**: ~~~javascript msgClass: "n-top" //消息将自动显示在输入框上边 msgClass: "n-right" //消息将自动显示在输入框右边 msgClass: "n-bottom" //消息将自动显示在输入框下边 msgClass: "n-left" //消息将自动显示在输入框左边 msgClass: "n-right myclass" //消息将自动显示在输入框右边,你还可以通过myclass来定义更多样式 ~~~ ### **msgStyle - 自定义 CSS 样式,添加在消息容器上** **类型**:`String` **默认**:`""` **示例**: ~~~javascript // 有时候主题定义的消息样式的位置没有达到预期,就可以通过 msgStyle 参数传递 css 来精确控制消息位置 $('form').validator({ theme: "simple_right", msgStyle: "margin-left:-10px; margin-top:10px;", fields: { 'email': 'required;email;' } }); ~~~ ### **msgWrapper - 消息容器的 tagName** **类型**:`String` **默认**:`span` ### **msgMaker - 自定义消息 HTML 结构** **类型**:`Function(obj)`|`Boolean` **默认**:`null` **说明**:msgMaker 生成的消息 HTML 会插入到对应的 msgWrapper 中,如果不想生成消息,可以设置`msgMaker:false` **示例**: ~~~javascript $('#form').validator({ fields: { 'user[name]': 'required;username' ,'user[pwd]': 'required;password' }, msgWrapper: 'div', msgMaker: function(opt){ return '<span class="'+ opt.type +'">' + opt.msg + '</span>'; } }); ~~~ 以上 msgMaker 配置,将生成如下消息结构 ~~~html <div class="msg-box n-right" for="user[name]"> <span class="n-error">Please fill this field.</span> </div> ~~~ ### **msgIcon - 自定义消息图标的 HTML 模板** **类型**:`String` **默认**:`"<span class="n-icon"></span>"` ### **msgArrow- 自定义消息箭头的 HTML 模板** **类型**:`String` **默认**:`""` ### **msgShow - 消息提示之前调用此函数** **类型**:`Function($msgbox, type)` **默认**:`null` ### **msgHide - 消息隐藏之前调用此函数** **类型**:`Function($msgbox, type)` **默认**:`null`