一:目录结构
文件说明:
- jquery.js —-JQuery文件
- test.js——–验证测试文件
jquery.validate.js—-validate验证文件
jquery.validate.ex.js—–validate验证拓展库
sea.js ———-seajs文件和配置
index.html ——>测试html文件
js详细内容
1、seajs 省略js,只包含配置文件
var publishVersion = '@version@';
var version = '20160115';
if(publishVersion.indexOf('@') < 0){
version = publishVersion;
}
seajs.config({
base: "./js/",
alias: {
"jquery": "jquery/jquery.js",
"angularjs": "angularjs/lib/angular.min.js",
"ngConfig": "angularjs/config/config.js",
"ngmessage": "angularjs/lib/angular-messages.js",
"validateDirectives": "angularjs/directives/validateDirectives.js",
"directives": "angularjs/directives/directives.js",
"superslide": "SuperSlide/jquery.SuperSlide.2.1.js",
"validate": "validate/jquery.validate.js",
"validation": "validate/jquery.validate.ex.js",
"aos": "aos/aos.js",
"aosui": "aos/aos.css",
"myValidate": "validate/myValidate.js"
},
map: [
[ /^(.*\.(?:css|js))(.*)$/i, '$1?v=' + version ]
]
});
2、jquery.validate.ex.js 验证拓展库
define(function(require, exports, module) {
jQuery.validator.addMethod("isZipCode", function(value, element) {
var zip = /^[0-9]{6}$/;
return this.optional(element) || (zip.test(value));
}, "请正确填写您的邮政编码!");
jQuery.validator.addMethod("numFormart", function(value, element, params) {
alert(value)
var re = /^(0|[1-9]\d*)(\.\d{1,2})?$/;
var result = re.test(value);
return result;
}, "金额不能以0开头");
jQuery.validator.addMethod("isMobile", function(value, element) {
var length = value.length;
return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(14[0-9]{1}))+\d{8})$/.test(value));
}, "请正确填写您的手机号码!");
jQuery.validator.addMethod("isPhone", function(value, element) {
var tel = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;
var mobile = /^(((13[0-9]{1})|(14[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(15[0-9]{1}))+\d{8})$/;
return this.optional(element) || (tel.test(value));
}, "请正确填写您的电话号码!")
jQuery.validator.addMethod("userName", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "用户名只能包括中文字、英文字母、数字和下划线!");
jQuery.validator.addMethod("isTel", function(value,element) {
var length = value.length;
var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/;
var tel = /^\d{3,4}-?\d{7,9}$/;
return this.optional(element) || (tel.test(value) || mobile.test(value));
}, "请正确填写您的联系电话!");
jQuery.validator.addMethod("ip", function(value, element) {
return this.optional(element) || /^(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.)(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$/.test(value);
}, "请填写正确的IP地址!");
jQuery.validator.addMethod("times", function(value, element,param) {
return this.optional(element) || Number(value)%Number(param) == 0;
}, jQuery.validator.format("必须是{0}的整数倍!"));
jQuery.validator.addMethod("accountMax",function(value,element,param){
return Number(value) <= Number(param);
},jQuery.validator.format("账户余额不足!"));
jQuery.validator.addMethod("tenderMax",function(value,element,param){
return Number(value) <= Number(param);
},jQuery.validator.format("不能大于当前可投额度!"));
jQuery.validator.addMethod("bigtimes", function(value, element,param) {
return this.optional(element) || Number(value) * 10000 % Number(param) == 0;
}, jQuery.validator.format("必须是{0}的整数倍!"));
jQuery.validator.addMethod("smaller", function(value, element, param) {
var target = $( param );
return this.optional(element) || Number(value) <= Number(target.val());
}, jQuery.validator.format("请正确填写"));
jQuery.validator.addMethod("isNoChinese", function(value, element) {
var reg = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
return this.optional(element) || (!reg.test(value) && /^[\u0391-\uFFE5\w]+$/.test(value)) ;
}, "用户名必须由字母、数字或“_”组成");
jQuery.validator.addMethod("isNickName", function(value, element) {
var reg = /^[\w][\w@.]+$/;
return this.optional(element) || reg.test(value);
}, "用户名必须由字母、数字或特殊符号(@_.)组成");
jQuery.validator.addMethod("isNoSpace", function(value, element) {
var reg = /^[^ ]+$/;
return this.optional(element) || reg.test(value);
}, "密码中不能含有任何空格");
jQuery.validator.addMethod("isValidBizUserId", function(value, element) {
var reg = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
return this.optional(element) || (!reg.test(value) && /^[\u0391-\uFFE5\w]+$/.test(value)) ;
}, "引荐人工号格式不正确");
jQuery.validator.addMethod("complexity", function(value, element) {
var reg = /^(?=.*\d)(?=.*[a-zA-Z])[\S]+$/;
return this.optional(element) || reg.test(value);
}, jQuery.validator.format("密码过于简单,至少要字母和数字的组合"));
jQuery.validator.addMethod("loginPwdComplexity", function(value, element) {
var reg = /^(?=.*\d)(?=.*[a-zA-Z])[\S]+$/;
return this.optional(element) || reg.test(value);
}, jQuery.validator.format("登录密码为8~16位数字和字母的组合"));
jQuery.validator.addMethod("money", function(value, element) {
var reg = /^[0-9]+(.[0-9]{1,2})?$/;
return this.optional(element) || reg.test(value);
}, jQuery.validator.format("格式有误,只允许输入两位小数"));
jQuery.validator.addMethod("yearRate", function(value, element) {
var reg = /^[0-9]+(.[0-9]{1})?$/;
return this.optional(element) || reg.test(value);
}, jQuery.validator.format("格式有误,只允许输入1位小数"));
jQuery.validator.addMethod("age", function(value, element) {
var age = /^(?:[1-9][0-9]?|1[01][0-9]|120)$/;
return this.optional(element) || (age.test(value));
}, "不能超过120岁");
jQuery.validator.addMethod("fax",function(value,element){
var fax = /^(\d{3,4})?[-]?\d{7,8}$/;
return this.optional(element) || (fax.test(value));
},"传真格式如:0371-68787027");
jQuery.validator.addMethod("equalTo2",function(value, element){
var returnVal = true;
var id = $(element).attr("data-rule-equalto2");
var targetVal = $(id).val();
if(value === targetVal){
returnVal = false;
}
return returnVal;
},"不能和原始密码相同");
jQuery.validator.addMethod("gt",function(value, element){
var returnVal = false;
var gt = $(element).data("gt");
if(value > gt && value != ""){
returnVal = true;
}
return returnVal;
},"不能小于0 或空");
jQuery.validator.addMethod("chinese", function (value, element) {
var chinese = /^[\u4E00-\u9FFF]+$/;
return this.optional(element) || (chinese.test(value));
}, "格式不对");
jQuery.validator.addMethod("times", function (value, element) {
var returnVal = true;
var base=$(element).attr('data-rule-times');
if(value%base!=0){
returnVal=false;
}
return returnVal;
}, "必须是发布赏金的整数倍");
jQuery.validator.addMethod("stringCheck", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "只能包括中文字、英文字母、数字和下划线");
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
var length = value.length;
for(var i = 0; i <value.length; i++){
if(value.charCodeAt(i) > 127){
length++;
}
}
return this.optional(element) || ( length >= param[0] && length <= param[1] );
}, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)");
jQuery.validator.addMethod("transferPrice", function(value, element,param) {
var account = (parseFloat(param) * 0.75).toString();
var resultAccount;
if(account.indexOf('.') >= 0){
resultAccount = account.substring(0, account.indexOf('.') + 3)
}
if(parseFloat(value) < parseFloat(resultAccount)){
return false;
}else{
return true;
}
}, jQuery.validator.format("转让价不能小于剩余本金的75%"));
jQuery.validator.addMethod("transferMaxPrice", function(value, element,param) {
if(parseFloat(value) > parseFloat(param)){
return false;
}else{
return true;
}
}, jQuery.validator.format("转让价不能大于剩余本金"));
jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
var target = $( param );
alert(target.val())
return this.optional(element) || Number(value) != Number(target.val());
});
jQuery.validator.addMethod("isIdCardNo", function(value, element) {
return this.optional(element) || isIdCardNo(value);
}, "身份证号错误(不区分大小写)");
function isIdCardNo(num) {
var factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
var parityBit = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
var parityBit1 = new Array("1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2");
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
if ((intStrLen != 15) && (intStrLen != 18)) {
return false;
}
for (i = 0; i < intStrLen; i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
return false;
} else if (i < 17) {
varArray[i] = varArray[i] * factorArr[i];
}
}
if (intStrLen == 18) {
var date8 = idNumber.substring(6, 14);
if (isDate8(date8) == false) {
return false;
}
for (i = 0; i < 17; i++) {
lngProduct = lngProduct + varArray[i];
}
intCheckDigit = parityBit[lngProduct % 11];
intCheckDigit1 = parityBit1[lngProduct % 11];
if (varArray[17] != intCheckDigit && varArray[17] != intCheckDigit1) {
return false;
}
}
else {
var date6 = idNumber.substring(6, 12);
if (isDate6(date6) == false) {
return false;
}
}
return true;
}
function isDate6(sDate) {
if (!/^[0-9]{6}$/.test(sDate)) {
return false;
}
var year, month, day;
year = sDate.substring(0, 4);
month = sDate.substring(4, 6);
if (year < 1700 || year > 2500) return false
if (month < 1 || month > 12) return false
return true
}
function isDate8(sDate) {
if (!/^[0-9]{8}$/.test(sDate)) {
return false;
}
var year, month, day;
year = sDate.substring(0, 4);
month = sDate.substring(4, 6);
day = sDate.substring(6, 8);
var iaMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (year < 1700 || year > 2500) return false
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1] = 29;
if (month < 1 || month > 12) return false
if (day < 1 || day > iaMonthDays[month - 1]) return false
return true
}
})
3、test.js测试调用文件
define(function(require){
require('jquery');
require('validate');
require('validation');
$(".erroy_tips").bind('DOMNodeInserted', function(e) {
if(($(e.target).html()).length>1){
showTips();
}
});
$().ready(function(){
$("#validateForm").validate({
debug:true,
focusInvalid: false,
onkeyup: false,
errorPlacement: function(error, element) {
$("#erroy_tips").html(error);
},
rules:{
name: "required",
number: {
required: true,
number: true,
max: 100000000,
min: -100
},
code: {
required: true,
rangelength: [15,19],
isIdCardNo: true
},
mobile: {
required: true,
isMobile: true
},
money: {
required: true,
numFormart: 0
},
date: {
required: true,
}
},
messages: {
name: "name不能为空!",
number: {
required: "number不能为空",
number: "请输入有效的数字",
max: "最大值不能超过{0}",
min: "最小值不能超过{0}"
},
code: {
required: "code不能为空",
rangelength: "身份证长度为{0}到{1}",
isIdCardNo: "身份证格式不正确!"
},
mobile: {
required: "mobile不能为空",
isMobile: "请输入正确的手机号码!"
},
money: {
required: "money不能为空",
numFormart: "金额不能以0开头!"
},
date: {
required: "date不能为空",
date: "时间格式正确!"
}
},
submitHandler:function(form){
alert("submit!");
}
})
})
})
4、test.html 测试html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="js/sea.js"></script>
<title></title>
</head>
<body>
<form action="www.baidu.com" id="validateForm" name="validateForm">
name: <input id="name" name="name"/><br/>
number: <input id="number" name="number"/><br/>
code: <input id="code" name="code"/><br/>
mobile: <input id="mobile" name="mobile"/><br/>
money: <input id="money" name="money"/><br/>
date: <input id="date" name="date"/><br/>
submit: <input type="submit" value="提交" />
</form>
<div id="erroy_tips" style="color: red;">
</div>
</body>
<script type="text/javascript">
seajs.use(["myJs/test"])
</script>
</html>