微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

扩展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]才是有值的。

原文地址:https://www.jb51.cc/regex/362826.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐