easyui为我们提供了validatebox类型的组件,使用它可以完成自动验证,十分方便。要注意的是,easyui中的各个组件都是有继承关系的。通过查看api,textbox继承validatebox,而其他的组件类型又直接或间接的继承textbox,所以,只要使用了easyui form插件中的一类,那么自然的我们就能使用它的验证框架。

一.自带验证类型

  easyui-validatebox为我们提供了基本的验证,有五种,分别为required、email、url、length[0,100]、remote['http://.../action.do','paramName']。

<input type="text" name="a" class="easyui-validatebox" data-options="required:true">
<input type="text" name="b" class="easyui-validatebox" data-options="required:true,validType:'email'">
<input type="text" name="c" class="easyui-validatebox" data-options="required:true,validType:length[6,9]">
<!-- easyui 1.3.2以后可用 -->
<input type="text" name="d" class="easyui-validatebox" data-options="required:true,validType:['email','length[6,9]']">
<!-- remote类型就不演示了,因为它本质上是ajax验证,但ajax一般是要有特殊处理的,大家自己调用ajax进行验证就好 -->

  这样来看easyui-validatebox是不是使用起来非常简单呢?不过,它只为我们提供了比较基础的验证类型, 如果有更多的要求,我们就需要自己自定义验证类型了。

二.自定义验证类型:

1.api提供的自定义验证类型

$.extend($.fn.validatebox.defaults.rules, {
//验证两个输入框相等
equals: {
validator: function(value,param){
return value == $(param[0]).val();
},
message: 'Field do not match.'
},
//输入的最小长度
minLength: {
validator: function(value, param){
return value.length >= param[0];
},
message: 'Please enter at least {0} characters.'
}
});
<!-- 验证两次输入的密码是否相等 -->
<input id="pwd" name="pwd" type="password" class="easyui-validatebox" data-options="required:true">
<input id="rpwd" name="rpwd" type="password" class="easyui-validatebox" required="required" validType="equals['#pwd']">
<!-- 验证输入字段的最小长度 -->
<input class="easyui-validatebox" data-options="validType:'minLength[5]'">

  当我们定义完了自定义验证类型后,就可以像easyui提供给我们的类型一样去使用了。

  注意看equals['#pwd']传入的是id,而minLength[5]传入的是数值,这个具体的要看内部实现。“validator:function(value, param){}”中param是数组类型。

  这里要补充一下,其实easyui本质上是jquery的插件,而我们的自定义类型,就是对jquery插件方法的扩展。更多关于jquery插件的问题,可以查阅其他的资料,当然,以后我也会对其进行总结的。

2.更多的自定义类型

/*
* 比较两个日期的大小
* 传入的参数推荐是"yyyy-mm-dd"的格式,其他的日期格式也可以,但要保证一致
*/
var dateCompare = function(date1, date2){
if(date1 && date2){
var a = new Date(date1);
var b = new Date(date2);
return a < b;
}
} /*
* 对easyui-validatebox的验证类型的扩展
*/
$.extend($.fn.validatebox.defaults.rules, {
//手机号码
mobile: {
validator: function(value, param){
return /^0{0,1}1[3,8,5][0-9]{9}$/.test(value);
},
message: "手机号码格式不正确"
},
//身份证
IDCard: {
validator: function(value, param){
return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
},
message: "请输入正确的身份证号码"
},
//比较时间选择器
compareDate: {
validator: function(value, param){
return dateCompare($(param[0]).datetimebox("getValue"), value);
},
message: "结束日期不能小于开始日期"
}
});

  这里也只列举了几个比较常用的自定义类型,未来还会继续对其进行补充。

三.总结

  easyui-validatebox是一个比较轻便的验证框架,但它同时又支持对其自定义,所以功能也非常强大。其实在自定义验证类型的过程中,我觉得最重要的反而是正则表达式的知识。

四.补充列表

  《对easyui-validatebox的验证类型的扩展--补充》增加了更多的自定义类型,2016-06-03

对easyui-validatebox的验证类型的扩展的更多相关文章

  1. 对easyui-validatebox的验证类型的扩展--补充

    一.说明 这篇文章是<对easyui-validatebox的验证类型的扩展>的补充.在工程的持续开发中,我们又对此进行了更多的补充. 二.补充代码 增加了更多的验证类型. /* * 比较 ...

  2. Easyui validatebox后台服务端验证

    Easyui validatebox的验证提示十分好用,可是在实际项目的运用中,经常会遇到需要服务器验证后并返回验证结果信息,比如验证用户名.手机号.邮箱是否已存在.于是就想着怎么拓展Easyui的验 ...

  3. easyui validatebox 验证类型

    required: "必选字段",        remote: "请修正该字段",        email: "请输入正确格式的电子邮件" ...

  4. 表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树

    EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等. ...

  5. Easyui表单验证扩展

    简介: 使用Easyui,我们省了好多事情,不用为UI费心,只需要关注业务层面即可,下面是一些常用的验证方面的扩展,收藏下自己用 //重载$.fn.validatebox.defaults.rules ...

  6. JQuery EasyUI validatebox(验证框)

    JQuery EasyUI validatebox(验证框) http://www.easyui.info/archives/602.html

  7. EasyUI Validatebox 验证框

    转自:http://www.jeasyui.net/plugins/167.html 通过 $.fn.validatebox.defaults 重写默认的 defaults. 验证框(validate ...

  8. EasyUI表单验证,自定义插件验证,自定义js插件验证,远程验证,常见手机号,中英文,qq等验证规则验证

     { field : 'startPort', title : "起始端口", editor: "text", width : 50, editor: { ...

  9. easyUI validatebox设置值和获取值,以及属性和方法

    一:表单元素使用easyui时,textbox和validatebox设置值和获取值的方式不一样[转] 1.为text-box设置值只能使用id选择器选择表单元素,只能使用textbox(" ...

随机推荐

  1. JS基础-数据类型判断typeof、instanceof、Object.prototype.toString

    typeof用在基本数据类型和函数时,返回其对应类型的描述,对于引用类型都返回为object. instanceof无法判断基本数据类型,对于引用类型数据,返回其其对应类型. Object.proto ...

  2. C++ //继承中的对象模型 //利用开发人员命令提示工具查看对象模型 //父类中所有非静态成员属性都会被 子类继承下去 //父类中私有成员属性 是被编译器给隐藏了 因此是访问不到 但是确实被继承下去了

    1 //继承方式 2 //语法:class 子类 :继承方式 父类 3 //继承方式 三种: 4 //1.公共继承 5 //2.保护继承 6 //3.私有继承 7 8 /* 9 #include &l ...

  3. Java_classpath

    Java_classpath 什么是classpath? classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class. 因为Java是编译型语言,源码文件是.java,而编译后的 ...

  4. windows和linux传输小技巧——FTP服务

    目录 一.FTP简介 二.匿名用户访问设置 三.设置本地用户验证访问ftp 3.1.修改匿名用户.本地用户登录的默认根目录 四.使用user_list列表 一.FTP简介 FTP服务--用来传输文件的 ...

  5. 10分钟了解微服务、容器和Kubernetes

    什么是微服务? 什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?如果这些问题在您的日常生活中不断出现,那么这篇文章适合您. 从根本上说,微服务只是一个运行在服务器或 ...

  6. 2021 年 iOS 应用程序开发七种最佳语言

    移动应用程序现在几乎是每个在线业务的必备品.最新的 StatCounter 数据显示,多达56% 的在线连接是通过移动设备建立的,这使它们高于平板电脑和计算机.更重要的是,同一个消息来源说,其中27% ...

  7. SeacmsV10.7版代码审计笔记

    data: 2020.11.9 10:00AM description: seacms代码审计笔记 0X01前言 seacms(海洋cms)在10.1版本后台存在多处漏洞,事实上当前最新版V10.7这 ...

  8. 题解 CF613E Puzzle Lover

    解题思路 其实仔细观察我们可以发现路径一定是一个类似于下图的一个左括号之后中间随便反复曲折,然后右边在来一个右括号. 然后对于两个括号形状的东西其实是可以利用 Hash 来判等特殊处理的. 对于中间的 ...

  9. 为什么网络损伤仪WANsim中没有流量通过

    在使用网络损伤仪 WANsim 的过程中,有时候发现网损仪中没有流量通过.有些小伙伴可能会想:自己所有配置都是正确的 ,为什么会没有流量通过呢? 有可能,是你忽略了一些东西. 下面,我总结了一些导致网 ...

  10. 《手把手教你》系列技巧篇(二十)-java+ selenium自动化测试-元素定位大法之终卷(详细教程)

    1.简介 这篇文章主要是对前边的文章中的一些总结和拓展.本来是不打算写着一篇的,但是由于前后文章定位元素的时间有点长,怕大家忘记了,就在这里简单做一个总结和拓展. 2.Selenium八种定位方式 S ...