扩展validatebox的正则表达式校验器

easyui为validatebox组件提供一些预置的校验器,只有email、url、length[min,max]、remote四种,但实际应用中的校验规则是千变万化的,显然这四种校验器不能满足我们的要求,所以easyui为validatebox提供了一种扩展机制用于自定义校验器,这是easyui官方文档提供的一个例子: $.extend($.fn.validatebox.defaults.rules,{ minLength: { validator: function(value,param){ return value.length >= param[0]; },message: 'Please enter at least {0} characters.' } }); 虽然我们可以为每一种校验规则编写一个检验器,但是需求总是变化的,这样就可能要编写很多个检验器,有没有更通用一点的方法呢? 于是想到了用正则表达式,扩展一种用正则表达式进校验的校验器,这样这一个校验器基本上就可以应付所有校验要求,当然前提是 要对正则表达式比较熟悉了。但是这样有个问题需要解决,就是如果检验失败一般都有个提示信息,那么这个提示信息 为什么呢?先看个例子吧 $.extend($.fn.validatebox.defaults.rules,{ regex: { validator: function(value,param){ var re = new RegExp(param[0]); return re.test(value); },message: '{1}' } }); 例如:username需要3位长度以上 使用方法是:<input name="username" class="easyui-validatebox" required="true" validType="regex['^[\\w]{3,}$','用户名必须3位以上']"/> 这里解释一下,validatebox传递到校验函数中的value输入框的值,param就是校验器名regex后面的数组,这里在该数组里面传递了两个值 第0个是正则表达式模式文本,第1个是提示信息。message为需要提示的内容,这里我用的是一个占位符{1},意思就是获取数组中的第1个值param[1] 注意,不能写成message: param[1],因为这时当浏览器加载这个校验器所在js文件的时候就会检查message的值,而这时param[1]是undefined,因为 只有你在检验输入框输入数据的时候才会回调检验函数,这时param[1]才是有值的。

相关文章

jquery.validate使用攻略(表单校验) 目录 jquery.validate...
/\s+/g和/\s/g的区别 正则表达式/\s+/g...
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母...
this.optional(element)的用法 this.optional(element)是jqu...
jQuery.validate 表单动态验证 实际上jQuery.validate提供了...
自定义验证之这能输入数字(包括小数 负数 ) &lt;script ...