扩展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]才是有值的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值