//验证函数 var Verify = { isEmptyMsg: "", isShortLengthMsg: "", isLongLengthMsg: "", isNum: function (num) {//验证数字 var reg = /^(-|\+)?\d+$/; if (reg.test(num)) { return true; } else { return false; } }, isPosFloat: function (num) {//验证正浮点数 var reg = /^[1-9]\d*.\d*|0.\d*[1-9]\d*|0|[1-9]\d*$/; if (reg.test(num)) { return true; } else { return false; } }, isNegFloat: function (num) {//验证负浮点数 var reg = /^-([1-9]\d*.\d*|0.\d*[1-9]\d*|[1-9]\d*)$/; if (reg.test(num)) { return true; } else { return false; } }, isFloat: function (num) {//验证浮点数 var reg = /^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|[1-9]\d*)|0$/; if (reg.test(num)) { return true; } else { return false; } }, isPosNum: function (num) {//验证正数字 var reg = /^[0-9]*$/; if (reg.test(num)) { return true; } else { return false; } }, isNegNum: function (num) {//验证负数字 var reg = /^-[0-9]*$/; if (reg.test(num)) { return true; } else { return false; } }, isMobile: function (mobile) {//验证手机号 var reg = /^0?1[0-9][0-9]\d{8}$/; if (reg.test(mobile)) { return true; } else { return false; } }, isMoney: function (money) {//金额 var reg = /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/; if (reg.test(money)) { return true; } else { return false; } }, isEmaile: function (email) {//验证邮箱 var reg = /^[a-zA-Z0-9_-]+(\.([a-zA-Z0-9_-])+)*@[a-zA-Z0-9_-]+[.][a-zA-Z0-9_-]+([.][a-zA-Z0-9_-]+)*$/; if (reg.test(email)) { return true; } else { return false; } }, isIdentity: function (identity) {//身份证号 var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (reg.test(identity)) { return true; } else { return false; } }, isBankNo: function (str) {//是否银行卡号 return CheckBankNo(str); }, isNull: function (str) {//非空验证 return $.trim(str) == ''; }, strLength: function (str, length) {//字符串长度验证 return str.length > length; }, strShortLength: function (str) {//短文本长度验证 return Verify.strLength(str, 100); }, strLongLength: function (str) {//长文本长度验证 return Verify.strLength(str, 5000); }, VerifyAll: function (listcontrols) {//通用验证(包含必填,长度attr(length:long|short)) var errormsg = ""; $.each(listcontrols, function (i, control) { debugger; var item = $(control); var val = item.val(); var name = item.attr("title"); var controltype = item.attr("length"); if (Verify.isNull(val)) { if (item.attr("isempty") == "true") { item.focus(); errormsg = name + Verify.isEmptyMsg return false; } } else { if (controltype != undefined && controltype == "long") { if (Verify.strLongLength(val)) { item.focus(); errormsg = name + Verify.isLongLengthMsg return false; } } else { if (Verify.strShortLength(val)) { item.focus(); errormsg = name + Verify.isShortLengthMsg return false; } } } }); return errormsg; }, VerifyChildren: function (listcontrols) {//通用验证(包含必填) var errormsg = ""; $.each(listcontrols, function (i, item) { var $item = $(item); var $table = $item.parent().parent().parent().parent(); var tblId = $table.attr("id"); tableTitle = $table.parent().parent().find("h3 label").text(); tableTitle = tableTitle || ""; tableTitle.length != 0 && (tableTitle += "表中的"); var $name = $item.attr("field"); var $verify = $item.attr("checkexpession"); var $maxValue = $item.attr("maxvalue"); var $tdindex = $item.closest("td").index(); //列索引 var $title = $("#" + tblId +" tr:eq(0) td:eq(" + $tdindex + ")").html();//标题 var $value = $item.val(); if ($name != null && $name != '' && $verify != null && $verify != '') { //不能为空 if (($value == null || $value == '') && !$item.parent().is(":hidden")) { errormsg = tableTitle + "[" + $title + "] 不能为空,请正确填写!"; $item.focus(); return false; } //不能大于最大值 if ($maxValue != undefined && $value != '' && parseFloat($value) > parseFloat($maxValue)) { errormsg = tableTitle + "[" + $title + "] 不能大于{" + $maxValue + "},请重新填写!"; $item.focus(); return false; } //必须为数字 if ($verify == "Num" && !Verify.isFloat($value)) { errormsg = tableTitle + "[" + $title + "] 必须为数字!"; $item.focus(); return false; } } }); return errormsg; } } //弹出层展示页面 var OpenWindow = function (title, width, height, url) { layer.open({ type: 2, title: title, shadeClose: true, shade: 0.5, area: [width, height], content: url }); } //银行卡号Luhn校验算法 //luhn校验规则:16位银行卡号(19位通用): //1.将未带校验位的 15(或18)位卡号从右依次编号 1 到 15(18),位于奇数位号上的数字乘以 2。 4 //2.将奇位乘积的个十位全部相加,再加上所有偶数位上的数字。 //3.将加法和加上校验位能被 10 整除。 //bankno为银行卡号 function luhnCheck(bankno){ var lastNum=bankno.substr(bankno.length-1,1);//取出最后一位(与luhn进行比较) var first15Num=bankno.substr(0,bankno.length-1);//前15或18位 var newArr=new Array(); for(var i=first15Num.length-1;i>-1;i--){ //前15或18位倒序存进数组 newArr.push(first15Num.substr(i,1)); } var arrJiShu=new Array(); //奇数位*2的积 <9 var arrJiShu2=new Array(); //奇数位*2的积 >9 var arrOuShu=new Array(); //偶数位数组 for(var j=0;j9 的分割之后的数组个位数 var jishu_child2=new Array();//奇数位*2 >9 的分割之后的数组十位数 for(var h=0;h9 的分割之后的数组个位数之和 var sumJiShuChild2=0; //奇数位*2 >9 的分割之后的数组十位数之和 var sumTotal=0; for(var m=0;m 19) { layer.alert("银行卡号长度必须在16到19之间", { icon: 5 }); return false; } var num = /^\d*$/;//全数字 if(!num.exec(bankno)) { layer.alert("银行卡号必须全为数字", { icon: 5 }); return false; } //开头6位 var strBin = "10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99"; if(strBin.indexOf(bankno.substring(0, 2)) == -1) { layer.alert("银行卡号开头6位不符合规范", { icon: 5 }); return false; } //Luhn校验 if(!luhnCheck(bankno)){ return false; } return true; } Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; } function dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) }; }; return fmt; }