//验证函数
|
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;j<newArr.length;j++){
|
if((j+1)%2==1){//奇数位
|
if(parseInt(newArr[j])*2<9)
|
arrJiShu.push(parseInt(newArr[j])*2);
|
else
|
arrJiShu2.push(parseInt(newArr[j])*2);
|
}
|
else //偶数位
|
arrOuShu.push(newArr[j]);
|
}
|
|
var jishu_child1=new Array();//奇数位*2 >9 的分割之后的数组个位数
|
var jishu_child2=new Array();//奇数位*2 >9 的分割之后的数组十位数
|
for(var h=0;h<arrJiShu2.length;h++){
|
jishu_child1.push(parseInt(arrJiShu2[h])%10);
|
jishu_child2.push(parseInt(arrJiShu2[h])/10);
|
}
|
|
var sumJiShu=0; //奇数位*2 < 9 的数组之和
|
var sumOuShu=0; //偶数位数组之和
|
var sumJiShuChild1=0; //奇数位*2 >9 的分割之后的数组个位数之和
|
var sumJiShuChild2=0; //奇数位*2 >9 的分割之后的数组十位数之和
|
var sumTotal=0;
|
for(var m=0;m<arrJiShu.length;m++){
|
sumJiShu=sumJiShu+parseInt(arrJiShu[m]);
|
}
|
|
for(var n=0;n<arrOuShu.length;n++){
|
sumOuShu=sumOuShu+parseInt(arrOuShu[n]);
|
}
|
|
for(var p=0;p<jishu_child1.length;p++){
|
sumJiShuChild1=sumJiShuChild1+parseInt(jishu_child1[p]);
|
sumJiShuChild2=sumJiShuChild2+parseInt(jishu_child2[p]);
|
}
|
//计算总和
|
sumTotal=parseInt(sumJiShu)+parseInt(sumOuShu)+parseInt(sumJiShuChild1)+parseInt(sumJiShuChild2);
|
|
//计算luhn值
|
var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;
|
var luhn= 10-k;
|
|
if(lastNum==luhn){
|
//console.log("验证通过");
|
return true;
|
}else{
|
layer.alert("银行卡号必须符合luhn校验", { icon: 5 });
|
return false;
|
}
|
}
|
|
//检查银行卡号
|
function CheckBankNo(bankno) {
|
var bankno = bankno.replace(/\s/g,'');
|
if(bankno == "") {
|
layer.alert("请填写银行卡号", { icon: 5 });
|
return false;
|
}
|
if(bankno.length < 16 || bankno.length > 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;
|
}
|