一.说明

  这篇文章是《对easyui-validatebox的验证类型的扩展》的补充。在工程的持续开发中,我们又对此进行了更多的补充。

二.补充代码

  增加了更多的验证类型。

/*
* 比较两个日期的大小
* 传入的参数推荐是"yyyy-mm-dd"的格式,其他的日期格式也可以,但要保证一致
*/
var dateCompare = function(date1, date2){
if(date1 && date2){
var a = new Date(date1);
var b = new Date(date2);
return a < b;
}
};
/*
* @author : Hill
* @desc: 比较两个时间的大小(传入的参数是"HH:mm"的格式,)
* @param: time1:目标时间;time2:被比较时间
*/
var timeCompare = function(time1, time2){
//console.info(time1+"-"+time2);
try {
if(time1 && time2){
var t1=parseInt(time1.split(":")[0]*60)+parseInt(time1.split(":")[1]);
var t2=parseInt(time2.split(":")[0]*60)+parseInt(time2.split(":")[1]);
return t1 < t2;
}
return false;
} catch (e) {
return false;
}
};
/*
* @author : Hill
* @desc: 比较两个时间的大小,支持的格式可在formatArr扩展
* @param: datetime1:目标时间;datetime2:被比较时间
*/
var dateTimeCompare = function(datetime1, datetime2){ var formatArr=new Array('YYYY-MM-DD',
'YYYY-MM-DD HH:mm',
'YYYY-MM-DD HH:mm:ss'
);//支持的格式
try {
if(datetime1 && datetime2){
var dt1=moment(datetime1,formatArr);
var dt2=moment(datetime2,formatArr);
// console.info(dt1+","+dt2);
return dt1<dt2;
}
return false;
} catch (e) {
return false;
}
}; /*
* 对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: "手机号码格式不正确"
},
//select空值验证
selectNotNull: {
validator: function(value, param){
//console.info(value);
return $(param[0]).find("option:contains('"+value+"')").val() != '';
//return value!='';
},
message: "请选择"
},
//正整数
pnum: {
validator: function(value, param){
return /^[0-9]*[1-9][0-9]*$/.test(value);
},
message: "请输入正整数"
},
//非0开头正整数
pznum: {
validator: function(value, param){
return /^[1-9]*[1-9][0-9]*$/.test(value);
},
message: "请输入非0开头的正整数"
},
//正实数,包含小数
num:{
validator: function(value, param){
return /^\d+(\.\d+)?$/.test(value);
},
message: "请输入正整数或者小数"
},
//2位正整数,或精确两位小数
numTwoOrPointTwo:{
validator: function(value, param){
return /^([1-9]\d?(\.\d{1,2})?|0\.\d{1,2}|0)$/.test(value);
},
message: "请输入1到2位的正整数或者精确到2位的小数"
},
//6位正整数,或精确两位小数
numSixOrPointTwo:{
validator: function(value, param){
return /^(([0-9]|([1-9][0-9]{0,5}))((\.[0-9]{1,2})?))$/.test(value);
},
message: "请输入1到6位的正整数或者精确到2位的小数"
},
//过滤特殊字符
filterSpecial:{
validator: function(value, param){ //过滤空格
var flag = /\s/.test(value);
//过滤特殊字符串
var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】’‘《》;:”“'。,、?]");
var specialFlag = pattern.test(value);
return !flag && !specialFlag; },
message: "非法字符,请重新输入"
}, //身份证
IDCard: {
validator: function(value, param){
//return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
var flag=checkIdcard(value);
return flag==true?true:false;
},
message: "请输入正确的身份证号码"
},
//比较日期选择器
compareDate: {
validator: function(value, param){
return dateCompare($(param[0]).datebox("getValue"), value);
},
message: "结束日期不能小于或等于开始日期"
},
//比较时间选择器(时分秒)
compareTime: {
validator: function(value, param){
return timeCompare($(param[0]).timespinner("getValue"), value);
},
message: "结束时间不能小于或等于开始时间"
},
//比较时间选择器(时分秒)
compareDateTime: {
validator: function(value, param){
return dateTimeCompare($(param[0]).timespinner("getValue"), value);
},
message: "结束时间不能小于或等于开始时间"
},
// 验证是否包含空格和非法字符
unnormal: {
validator: function (value) {
return /^[a-zA-Z0-9]/i.test(value); },
message: '输入值不能为空和包含其他非法字符'
} });
//校验身份证合法性
function checkIdcard(idcard){
var Errors=new Array(
"验证通过!",
"身份证号码位数不对!",
"身份证号码出生日期超出范围或含有非法字符!",
"身份证号码校验错误!",
"身份证地区非法!"
);
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}; //var idcard=idcard;
var Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地区检验
if(area[parseInt(idcard.substr(0,2))]==null){
//alert(Errors[4]);
//setItemFocus(0, 0, "CertID");
return Errors[4];
} //身份号码位数及格式检验
switch(idcard.length){
case 15:
if((parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
}else{
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
} if(ereg.test(idcard)){
//alert(Errors[0]);
//setItemFocus(0, 0, "CertID");
return true; }else{
//alert(Errors[2]);
//setItemFocus(0, 0, "CertID");
return Errors[2];
}
break;
case 18:
//18位身份号码检测
//出生日期的合法性检查
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
}else{
ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
}
if(ereg.test(idcard)){//测试出生日期的合法性
//计算校验位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判断校验位
if(M == idcard_array[17]){
return true;
//Errors[0]; //检测ID的校验位
}else{
//alert(Errors[3]);
//setItemFocus(0, 0, "CertID");
return Errors[3];
}
}else{
//alert(Errors[2]);
//setItemFocus(0, 0, "CertID");
return Errors[2];
}
break;
default:
//alert(Errors[1]);
//setItemFocus(0, 0, "CertID");
return Errors[1];
break;
}
}

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

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

    easyui为我们提供了validatebox类型的组件,使用它可以完成自动验证,十分方便.要注意的是,easyui中的各个组件都是有继承关系的.通过查看api,textbox继承validatebo ...

  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. 【Android面试揭秘】面试官说“回去等通知”,我到底会不会等来通知?

    前言 大部分情况下,面试结束后,面试官都会跟你说:我们会在1-2个工作日内通知你面试结果. 许多人认为:所谓「等通知」其实是面试官委婉地给你「发拒信」.但是,这不是「等通知」的全部真相. 这篇文章,我 ...

  2. markdown的摘要测试

    123456789 1 123456789 2 123456789 3 123456789 4 123456789 5 123456789 6 粗体 123456 划线 123456 斜体 12345 ...

  3. JavaGUI画笔工具的使用

    JavaGUI画笔工具的使用 package GUI; import java.awt.*; public class TestPaint { public static void main(Stri ...

  4. win7环境下配置JDK&&安装Weblogic12.2.1.4.0

    win7环境下安装Weblogic12.2.1.4.0 写在前面 最近因为想复现一下weblogic的CVE-2020-2555和CVE-2020-2883漏洞,需要weblogic环境,但是vulh ...

  5. 如何保证前端项目上线后的安全?webfunny已总结前端最关键的12大指标

    实时监控大屏   众所周知:实时流量大屏,是用来监控前端项目上线质量的. 如大家所知,监控系统会监控线上应用的各项指标,如:错误.白屏.耗时等等,但是仔细一想,即使有这些监控,我们也不一定能够保证线上 ...

  6. STM32—ADC详解

    文章目录 一.ADC简介 二.ADC功能框图讲解 1.电压输入范围 2.输入通道 3.转换顺序 4.触发源 5.转换时间 6.数据寄存器 7.中断 8.电压转换 三.初始化结构体 四.单通道电压采集 ...

  7. (一)Linux之目录结构

    Linux之目录结构 目录 Linux之目录结构 一.概述 一.基本介绍 二.具体的目录结构(不用背,知道即可) Linux /usr目录 Linux /var 目录 一.概述 学习 Linux,不仅 ...

  8. Linux搭建Snmp服务

    1:安装snmp yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils php-snmp 上面的程序首先会校验需要升级的文件 ...

  9. 服务器受到网络攻击时,如何获取请求客户端的真实 IP?

    网络攻击 前不久公司遭受了一次网络攻击. 早晨刚到公司,就发现登录接口的调用次数飙升,很快就确认是被恶意攻击,让安全部门做网关入口针对对方 IP 加了限制. 并统一对所有的 IP 加了调用的频率限制. ...

  10. mysql导出word的表结构操作

    mysql导出word的表结构操作 1.首先准备好mysql的相关插件mysql-connector-odbc和DBExportDoc 百度网盘地址: 链接:https://pan.baidu.com ...