jquery-validation move to static

This commit is contained in:
thinkgem
2024-07-21 18:32:37 +08:00
parent 3ba3aa2b2b
commit 808175d835
8 changed files with 1872 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

View File

@@ -0,0 +1,7 @@
label.error {background:url("images/unchecked.gif") no-repeat 0px 0px;padding-left: 18px;
padding-bottom: 2px;font-weight: bold;color: #EA5200;margin-left: 10px;}
label.has-error {top:auto;left:15px;padding:0px 5px 1px;font-size:11px;
position:absolute;color:#fff;background:#FF6969;z-index:1000;border-radius:5px;
-webkit-box-shadow:0 5px 10px #dedede;box-shadow:0 5px 10px #dedede;opacity:0.8;}
label.has-error:after{border-color:rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #FF6969;border-style:solid;
border-width:6px;content:"";height:0;left:15px;position:absolute;top:-11px;}

View File

@@ -0,0 +1,290 @@
(function ($) {
if ($.validator.messages.errorMessage && $.validator.messages.errorMessage != ''){ // v4.1.8 可以设置为空不显示
$("#inputForm .box-footer [class*=col-sm-offset]")
.append("<div class=\"form-error\">"+$.validator.messages.errorMessage+"</div>");
}
$.extend($.validator.defaults, {
ignore: ":hidden:not(.required),input.select2-focusser", // 忽略验证的class名称
errorClass: 'has-error',
errorContainer: ".form-error",
errorPlacement: function(error, element) {
if (element.closest('.icheck').length > 0) {
element = element.closest(".icheck");
element.parent().css('position', 'relative');
error.insertAfter(element);
var pos = element.position1x();
error.css({'top': pos.top + element.outerHeight() + 2,
'left': pos.left + 5});
return;
}
else if (element.next().hasClass('select2')) {
element = element.next();
element.parent().css('position', 'relative');
}
else if (element.closest('.input-group').length > 0) {
element = element.closest('.input-group');
element.parent().css('position', 'relative');
}
error.insertAfter(element);
var pos = element.position1x();
error.css({'top': pos.top + element.outerHeight() - 5,
'left': pos.left + 5});
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.remove();
}
});
$.extend($.fn,{
resetValid: function() {
var element = $(this), errorLabel;
if (element.closest('.icheck').length > 0) {
errorLabel = element.closest('.icheck').parent();
}else if (element.closest('.input-group').size() > 0) {
errorLabel = element.closest('.input-group').parent();
}else{
errorLabel = element.parent();
}
//log(errorLabel)
element.closest('.has-error').removeClass('has-error');
errorLabel.find('label.has-error').remove();
}
});
}(jQuery));
// 登录账号验证
jQuery.validator.addMethod("userName", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, $.validator.messages.userName);
// 真实姓名验证
jQuery.validator.addMethod("realName", function(value, element) {
return this.optional(element) || /^[\u4e00-\u9fa5]{2,30}$/.test(value);
}, $.validator.messages.realName);
// 数字字母验证
jQuery.validator.addMethod("abc",function(value, element) {
return this.optional(element) || /^[a-zA-Z0-9_]*$/.test(value);
}, $.validator.messages.abc);
// 数字字母验证(以字母开头)
jQuery.validator.addMethod("abc123",function(value, element) {
return this.optional(element) || /^[a-zA-Z][a-zA-Z0-9_]*$/.test(value);
}, $.validator.messages.abc);
// 元素值比较验证
jQuery.validator.addMethod("noEqualTo",function(value, element, param) {
return value != $(param).val();
}, $.validator.messages.noEqualTo);
// 手机号码验证
jQuery.validator.addMethod("mobile", function(value, element) {
var tel = /^1[3,4,5,6,7,8,9]\d{9}$/g;
return this.optional(element) || (tel.test(value));
}, $.validator.messages.mobile);
// 固话号码或手机号码验证
jQuery.validator.addMethod("phone", function(value, element) {
var tel = /(^0[1-9]{1}\d{8,10}$)|(^1[3,4,5,6,7,8,9]\d{9}$)/g;
return this.optional(element) || (tel.test(value));
}, $.validator.messages.phone);
//固话号码验证
jQuery.validator.addMethod("simplePhone", function(value, element) {
var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
return this.optional(element) || (tel.test(value));
}, $.validator.messages.simplePhone);
// 邮政编码验证
jQuery.validator.addMethod("zipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, $.validator.messages.zipCode);
// 整数验证(支持负整数)
$.validator.addMethod("integer", function( value, element ) {
return this.optional( element ) || /^-?\d+$/.test( value );
}, $.validator.messages.integer);
// IP v4 验证
$.validator.addMethod("ipv4", function( value, element ) {
return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value );
}, $.validator.messages.ipv4);
// IP v6 验证
$.validator.addMethod("ipv6", function( value, element ) {
return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );
}, $.validator.messages.ipv6);
// QQ号验证
jQuery.validator.addMethod("qq", function(value, element) {
var tel = /^[1-9][0-9]{4,}$/;
return this.optional(element) || (tel.test(value));
}, $.validator.messages.qq);
// 全空格验证
jQuery.validator.addMethod("isBlank", function(value, element) {
var blank = /^[ | ]*$/;
return this.optional(element) || !(blank.test(value));
}, $.validator.messages.isBlank);
// 校验身份证号码验证
jQuery.validator.addMethod("idcard", function(value, element) {
//身份证号码验证工具
var idCardNoUtil = {
provinceAndCitys: {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:"国外"},
powers: ["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],
parityBit: ["1","0","X","9","8","7","6","5","4","3","2"],
genders: {male:"男",female:"女"},
checkAddressCode: function(addressCode){
var check = /^[1-9]\d{5}$/.test(addressCode);
if(!check) return false;
if(idCardNoUtil.provinceAndCitys[parseInt(addressCode.substring(0,2))]){
return true;
}else{
return false;
}
},
checkBirthDayCode: function(birDayCode){
var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode);
if(!check) return false;
var yyyy = parseInt(birDayCode.substring(0,4),10);
var mm = parseInt(birDayCode.substring(4,6),10);
var dd = parseInt(birDayCode.substring(6),10);
var xdata = new Date(yyyy,mm-1,dd);
if(xdata > new Date()){
return false;// 生日不能大于当前日期
}else if ( ( xdata.getFullYear() == yyyy ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == dd ) ){
return true;
}else{
return false;
}
},
getParityBit: function(idCardNo){
var id17 = idCardNo.substring(0,17);
var power = 0;
for(var i=0;i<17;i++){
power += parseInt(id17.charAt(i),10) * parseInt(idCardNoUtil.powers[i]);
}
var mod = power % 11;
return idCardNoUtil.parityBit[mod];
},
checkParityBit: function(idCardNo){
var parityBit = idCardNo.charAt(17).toUpperCase();
if(idCardNoUtil.getParityBit(idCardNo) == parityBit){
return true;
}else{
return false;
}
},
checkIdCardNo: function(idCardNo){
//15位和18位身份证号码的基本校验
var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo);
if(!check) return false;
//判断长度为15位或18位
if(idCardNo.length==15){
return idCardNoUtil.check15IdCardNo(idCardNo);
}else if(idCardNo.length==18){
return idCardNoUtil.check18IdCardNo(idCardNo);
}else{
return false;
}
},
//校验15位的身份证号码
check15IdCardNo: function(idCardNo){
//15位身份证号码的基本校验
var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
if(!check) return false;
//校验地址码
var addressCode = idCardNo.substring(0,6);
check = idCardNoUtil.checkAddressCode(addressCode);
if(!check) return false;
var birDayCode = '19' + idCardNo.substring(6,12);
//校验日期码
return idCardNoUtil.checkBirthDayCode(birDayCode);
},
//校验18位的身份证号码
check18IdCardNo: function(idCardNo){
//18位身份证号码的基本格式校验
var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
if(!check) return false;
//校验地址码
var addressCode = idCardNo.substring(0,6);
check = idCardNoUtil.checkAddressCode(addressCode);
if(!check) return false;
//校验日期码
var birDayCode = idCardNo.substring(6,14);
check = idCardNoUtil.checkBirthDayCode(birDayCode);
if(!check) return false;
//验证校检码
return idCardNoUtil.checkParityBit(idCardNo);
},
formateDateCN: function(day){
var yyyy =day.substring(0,4);
var mm = day.substring(4,6);
var dd = day.substring(6);
return yyyy + '-' + mm +'-' + dd;
},
// 获取信息
getIdCardInfo: function(idCardNo){
var idCardInfo = {
gender:"", // 性别
birthday:"" // 出生日期(yyyy-mm-dd)
};
if(idCardNo.length==15){
var aday = '19' + idCardNo.substring(6,12);
idCardInfo.birthday=idCardNoUtil.formateDateCN(aday);
if(parseInt(idCardNo.charAt(14))%2==0){
idCardInfo.gender=idCardNoUtil.genders.female;
}else{
idCardInfo.gender=idCardNoUtil.genders.male;
}
}else if(idCardNo.length==18){
var aday = idCardNo.substring(6,14);
idCardInfo.birthday=idCardNoUtil.formateDateCN(aday);
if(parseInt(idCardNo.charAt(16))%2==0){
idCardInfo.gender=idCardNoUtil.genders.female;
}else{
idCardInfo.gender=idCardNoUtil.genders.male;
}
}
return idCardInfo;
},
getId15:function(idCardNo){
if(idCardNo.length==15){
return idCardNo;
}else if(idCardNo.length==18){
return idCardNo.substring(0,6) + idCardNo.substring(8,17);
}else{
return null;
}
},
getId18: function(idCardNo){
if(idCardNo.length==15){
var id17 = idCardNo.substring(0,6) + '19' + idCardNo.substring(6);
var parityBit = idCardNoUtil.getParityBit(id17);
return id17 + parityBit;
}else if(idCardNo.length==18){
return idCardNo;
}else{
return null;
}
}
};
return this.optional(element) || idCardNoUtil.checkIdCardNo(value);
}, $.validator.messages.idcard);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,34 @@
(function ($) {
$.extend($.validator.messages, {
required: "This field is required.",
remote: "Please fix this field.",
email: "Please enter a valid email address.",
url: "Please enter a valid URL.",
date: "Please enter a valid date.",
dateISO: "Please enter a valid date (ISO).",
number: "Please enter a valid number.",
digits: "Please enter only digits.",
equalTo: "Please enter the same value again.",
maxlength: $.validator.format( "Please enter no more than {0} characters." ),
minlength: $.validator.format( "Please enter at least {0} characters." ),
rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
range: $.validator.format( "Please enter a value between {0} and {1}." ),
max: $.validator.format( "Please enter a value less than or equal to {0}." ),
min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
errorMessage: "The information you filled in is wrong.",
userName: "Chinese characters, English letters, Numbers and underscores.",
realName: "Can only be 2-30 Chinese characters",
abc: "Please enter alphanumeric or underline, a-Z start",
noEqualTo: "Please enter different values again",
mobile: "Please fill in your mobile number correctly, only 13,14,15,16,17,18,19",
simplePhone: "Please fill in your phone number correctly, and the fixed number is the area code (3-4 digits),",
phone: "Please fill in your phone number correctly, the number (3-4 digits), and the phone number is 13,14,15,16,17,18,19.",
zipCode: "Please fill in your zipCode correctly",
integer: "Please enter an integer",
ipv4: "Please enter a valid IP v4 address",
ipv6: "Please enter a valid IP v6 address",
qq: "Please fill in your qq number correctly",
isBlank: "Cannot input full spaces",
idcard: "Please enter the correct id number (15-18)"
});
}(jQuery));

View File

@@ -0,0 +1,34 @@
(function ($) {
$.extend( $.validator.messages, {
required: "このフィールドは必須です。",
remote: "このフィールドを修正してください。",
email: "有効なEメールアドレスを入力してください。",
url: "有効なURLを入力してください。",
date: "有効な日付を入力してください。",
dateISO: "有効な日付ISOを入力してください。",
number: "有効な数字を入力してください。",
digits: "数字のみを入力してください。",
equalTo: "同じ値をもう一度入力してください。",
maxlength: $.validator.format( "{0} 文字以内で入力してください。" ),
minlength: $.validator.format( "{0} 文字以上で入力してください。" ),
rangelength: $.validator.format( "{0} 文字から {1} 文字までの値を入力してください。" ),
range: $.validator.format( "{0} から {1} までの値を入力してください。" ),
max: $.validator.format( "{0} 以下の値を入力してください。" ),
min: $.validator.format( "{0} 以上の値を入力してください。" ),
errorMessage: "ご記入頂いた情報に誤りがございましたので、提示に基づき修正をお願いします。",
userName: "ご記入頂いた情報に誤りがございましたので、提示に基づき修正をお願いします。登录アカウントは中文字、英字、数字、下線のみです",
realName: "名前は2 ~ 30字程度",
abc: "数字または下線を入力してください,アルファベット開始",
noEqualTo: "再度異なる値を入力して下さい",
mobile: "お电话番号を正确にお书きください。ただ13、14、15、16、17、18、19番です",
simplePhone: "お电话番号を正しくお书きください。固定番号(3-4位)番号(7-9位)",
phone: "お电话番号を正确にお书きください。固定番号(3-4位)番号(7-9位)、携帯电话は13、14、15、16、17、18、19番です",
zipCode: "郵便番号を正しく入力してください",
integer: "整数を入力してください",
ipv4: "有効なIP v4アドレスを入力してください",
ipv6: "有効なIP v6アドレスを入力してください",
qq: "あなたのQQ番号を正しく入力してください",
isBlank: "全フレームを入力することはできません",
idcard: "正しい住民登録番号(15 ~ 18位)を入力してください。"
});
}(jQuery));

View File

@@ -0,0 +1,34 @@
(function ($) {
$.extend($.validator.messages, {
required: "必填信息",
remote: "请修正该信息",
email: "请输入正确格式的电子邮件",
url: "请输入合法的网址",
date: "请输入合法的日期",
dateISO: "请输入合法的日期 (YYYY-MM-DD).",
number: "请输入合法的数值",
digits: "请输入一个正整数",
equalTo: "请再次输入相同的值",
maxlength: $.validator.format("最多可以输入 {0} 个字符"),
minlength: $.validator.format("最少要输入 {0} 个字符"),
rangelength: $.validator.format("请输入长度在 {0} 到 {1} 之间的字符串"),
range: $.validator.format("请输入范围在 {0} 到 {1} 之间的数值"),
max: $.validator.format("请输入不大于 {0} 的数值"),
min: $.validator.format("请输入不小于 {0} 的数值"),
errorMessage: "您填写的信息有误,请根据提示修正。",
userName: "登录账号只能包括中文字、英文字母、数字和下划线",
realName: "姓名只能为2-30个汉字",
abc: "请输入字母数字或下划线,字母开头",
noEqualTo: "请再次输入不同的值",
mobile: "请正确填写您的手机号码只能是13,14,15,16,17,18,19号段",
simplePhone: "请正确填写您的电话号码,固话为区号(3-4位)号码(7-9位)",
phone: "请正确填写您的电话号码,固话为区号(3-4位)号码(7-9位),手机为13,14,15,16,17,18,19号段",
zipCode: "请正确填写您的邮政编码",
integer: "请输入一个整数",
ipv4: "请输入一个有效的 IP v4 地址",
ipv6: "请输入一个有效的 IP v6 地址",
qq: "请正确填写您的QQ号码",
isBlank: "不能输入全空格",
idcard: "请输入正确的身份证号码(15-18位)"
});
}(jQuery));

View File

@@ -0,0 +1,34 @@
(function ($) {
$.extend( $.validator.messages, {
required: "必須填寫",
remote: "請修正此欄位",
email: "請輸入有效的電子郵件",
url: "請輸入有效的網址",
date: "請輸入有效的日期",
dateISO: "請輸入有效的日期 (YYYY-MM-DD)",
number: "請輸入正確的數值",
digits: "只可輸入數字",
equalTo: "請重複輸入一次",
maxlength: $.validator.format( "最多 {0} 個字" ),
minlength: $.validator.format( "最少 {0} 個字" ),
rangelength: $.validator.format( "請輸入長度為 {0} 至 {1} 之間的字串" ),
range: $.validator.format( "請輸入 {0} 至 {1} 之間的數值" ),
max: $.validator.format( "請輸入不大於 {0} 的數值" ),
min: $.validator.format( "請輸入不小於 {0} 的數值" ),
errorMessage: "您填寫的信息有誤,請根據提示修正。",
userName: "登錄賬號只能包括中文字、英文字母、數字和下劃線",
realName: "姓名只能爲2-30個漢字",
abc: "請輸入字母數字或下劃線,字母開始",
noEqualTo: "請再次輸入不同的值",
mobile: "請正確填寫您的手機號碼只能是13,14,15,16,17,18,19號段",
simplePhone: "請正確填寫您的電話號碼,固話爲區號(3-4位)號碼(7-9位)",
phone: "請正確填寫您的電話號碼,固話爲區號(3-4位)號碼(7-9位),手機爲13,14,15,16,17,18,19號段",
zipCode: "請正確填寫您的郵政編碼",
integer: "請輸入一個整數",
ipv4: "請輸入一個有效的 IP v4 地址",
ipv6: "請輸入一個有效的 IP v6 地址",
qq: "請正確填寫您的QQ號碼",
isBlank: "不能輸入全空格",
idcard: "請輸入正確的身份證號碼(15-18位)"
});
}(jQuery));