/*
**通用文本验证Jquery版
**Create by jeffwang
**2011-06-17
**说明:此版本基于Jquery编写,要预先引入Jquery库文件
**可在自定义页面上重写 ValidateAlert ValidateAlertAll 两个提示方法
**参数说明:
1.buttonID:发起页面验证的按钮ID; 多按钮可以用";"分割
2.lostFocus:是否在控件失去焦点时发起验证 (true:是,false:否)
3.FaultCss:控件中信息发生错误时切换的Css 如果没有则可以给""值
**使用说明:
1.在页面的onload事件中初始化 验证对象 例:$(function () { var iva = new InputValidate(buttonID = "button1", lostFocus = false, FaultCss = ""); })
2.给页面上待验证的控件标记属性regex,多条验证规则以";"分割,格式为【验证规则:错误提示信息;验证规则:提示错误信息...】 例:<input type="text" regex="mustinput:必须输入邮箱;email:邮箱格式不正确" id="email"/>
3.时间比较验证格式 checkData:id1*id2,wrongMessage; 例 <input id="OnboardDate" regex="checkData:OnboardDate*ContractEnd,合同结束日期必须大于入职日期;" type="text" />
4.比较两个控件的值 compareValue:id1*id2,wrongMessage;例 <input id="RePassword" regex="compareValue:Password*RePassword,两次密码必须一致;" type="text" />
5.最小长度:minLength:minLength,wrongMessage 例 <input id="RePassword" minLength:6,密码不能少于6个字符; type="text" />
验证规则标记说明:
email:验证邮箱
url:验证网址
postnumber:验证邮编
area:验证区号
money:验证货币
cess:验证税率
card:身份证号
date:验证时间
mobile:验证手机
tel:验证电话号码
mustint:验证是正整数
mustinput:必填
checkData:时间比较
mustNumber:限制文本框必须填入数字
*/
/*验证器构造函数*/
function InputValidate() {
//验证发起的按钮ID
var buttonID;
//是否在焦点失去时验证
var lostFocus = true;
//验证控件错误时切换的Class名称
var FaultCss;
this.Init();
}
InputValidate.prototype.Init = function () {
var faultCss = FaultCss;
var inputcontrols = $("[regex]");
$.each(inputcontrols, function (index, Value) {
var inputid = $(Value).attr("id");
var Rules = $(Value).attr("regex").split(";");
$.each(Rules, function (i, Value) {
if (Value != "") {
var ruleArry = Value.split(":");
switch (ruleArry[0]) {
//邮箱
case "email":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isEmail($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "") {
$(this).addClass(faultCss);
}
ValidateAlert(ruleArry[1], inputid); ;
$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//网址
case "url":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isURL2($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//邮编
case "postnumber":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isRightPostCode($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//区号
case "area":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (area($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//货币
case "money":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isMoney($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//税率
case "cess":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isCess($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//身份证号
case "card":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isIdCard($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//时间大小校验
case "checkData":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
var idstart = (ruleArry[1].split(",")[0]).split("*")[0];
var idend = (ruleArry[1].split(",")[0]).split("*")[1];
if (CheckDate(idstart, idend)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
});
}
break;
//比较两个控件的值
case "compareValue":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
var id1 = (ruleArry[1].split(",")[0]).split("*")[0];
var id2 = (ruleArry[1].split(",")[0]).split("*")[1];
if (CompareValue(id1, id2)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
});
}
break;
//时间
case "date":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsDateString($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//手机
case "mobile":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isMobile($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//电话号码
case "tel":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isTel($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//整形
case "mustint":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsInteger($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//最小长度
case "minLength":
var minLength = ruleArry[1].split(",")[0];
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsMinLength($(this).val(), minLength)) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//最大长度
case "maxLength":
var maxLength = ruleArry[1].split(",")[0];
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsMaxLength($(this).val(), maxLength)) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//必填
case "mustinput":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($.trim($(this).val()) != "") {
if (faultCss != "") {
$(this).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
});
}
break;
//必须输入数字
case "mustNumber":
$("#" + inputid).bind("keypress", MustNumber);
break;
//必须输入字母
case "mustLetter":
$("#" + inputid).bind("keypress", MustLetter);
break;
default:
break;
}
}
})
});
/*
绑定验证按钮
*/
var buttonIds = buttonID.split(";")
$.each(buttonIds, function (index, Value) {
if (Value == "") { return; }
$("#" + Value).bind("click", function () {
inputcontrols = $("[regex]");
var wrongMessage = "";
$.each(inputcontrols, function (index, Value) {
var inputid = $(Value).attr("id");
var Rules = $(Value).attr("regex").split(";");
$.each(Rules, function (i, Value) {
if (Value != "") {
var ruleArry = Value.split(":");
switch (ruleArry[0]) {
//邮箱
case "email":
if ($("#" + inputid).val() != "") {
if (isEmail($("#" + inputid).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//网址
case "url":
if ($("#" + inputid).val() != "") {
if (isURL2($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//邮编
case "postnumber":
if ($(this).val() != "") {
if (isRightPostCode($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//区号
case "area":
if ($("#" + inputid).val() != "") {
if (area($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//货币
case "money":
if ($("#" + inputid).val() != "") {
if (isMoney($("#" + inputid).val())) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
SetRight(inputid);
}
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//税率
case "cess":
if ($("#" + inputid).val() != "") {
if (isCess($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//身份证号
case "card":
if ($("#" + inputid).val() != "") {
if (isIdCard($("#" + inputid).val())) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//时间
case "date":
if ($("#" + inputid).val() != "") {
if (IsDateString($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//手机
case "mobile":
if ($("#" + inputid).val() != "") {
if (isMobile($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//电话号码
case "tel":
if ($("#" + inputid).val() != "") {
if (isTel($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//正整数
case "mustint":
if ($("#" + inputid).val() != "") {
if (IsInteger($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//必填
case "mustinput":
if ($.trim($("#" + inputid).val()) != "") {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
break;
//最小长度
case "minLength":
var minLength = ruleArry[1].split(",")[0];
if ($("#" + inputid).val() != "") {
if (IsMinLength($("#" + inputid).val(), minLength)) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";";
}
}
break;
//最大长度
case "maxLength":
var maxLength = ruleArry[1].split(",")[0];
if ($("#" + inputid).val() != "") {
if (IsMaxLength($("#" + inputid).val(), maxLength)) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";";
}
}
break;
//时间比较
case "checkData":
var idstart = (ruleArry[1].split(",")[0]).split("*")[0];
var idend = (ruleArry[1].split(",")[0]).split("*")[1];
if (CheckDate(idstart, idend)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";"
}
break;
//比较两个控件的值
case "compareValue":
var id1 = (ruleArry[1].split(",")[0]).split("*")[0];
var id2 = (ruleArry[1].split(",")[0]).split("*")[1];
if (CompareValue(id1, id2)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";";
}
break;
default:
break;
}
}
})
});
if ($.trim(wrongMessage) != "") {
ValidateAlertAll(wrongMessage);
return false;
}
});
});
}
//验证邮箱
function isEmail(src) {
// var emailPat = /^(.+)@(.+)$/;
var emailPat = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
var matchArray = src.match(emailPat);
if (matchArray == null) {
return false;
}
return true;
}
//验证网址
function isURL(str_url) {
var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
+ "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+ "|" // 允许IP和DOMAIN(域名)
+ "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
var re = new RegExp(strRegex);
//re.test()
if (re.test(str_url)) {
// alert("正确");
return (true);
} else {
// alert("错误");
return (false);
}
}
//第二种验证表达式"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"
function isURL2(str_url) {
//var strRegex = "^http://(([a-zA-z0-9]|-){1,}\\.){1,}[a-zA-z0-9]{1,}-*";
var strRegex = "^http://(www\.){0,1}.+\.(com|net|cn)$";
var strRegex2 = "^https://(www\.){0,1}.+\.(com|net|cn)$";
var re = new RegExp(strRegex);
var re2 = new RegExp(strRegex2);
//re.test()
if (re.test(str_url) || re2.test(str_url)) {
// alert("正确");
return (true);
} else {
// alert("错误");
return (false);
}
}
//验证区号
function area(src) {
var phoneAreaNum = /^\d{3,4}$/;
if (re.test(src)) {
return true;
}
else {
return false;
}
}
//这个是判断输入的是否为货币值 最多小数点后4位
function isMoney(src) {
isMoneys = /^-?\d+\.{0,}\d{0,}$/;
if (isMoneys.test(src.replace(/,/g, ""))) {
return true;
}
}
//这个是判断输入的是税率 最多小数点后2位
function isCess(src) {
isMoneys = /^\-[0-9]+\.[0-9]{0,2}$/;
if (isMoneys.test(src)) {
return true;
}
}
//这个是判断输入的是否是整数
function isCount(src) {
isMoney = /^[0-9]\d*$/;
if (isMoney.test(src)) {
return true;
}
else {
return false;
}
}
//验证时间输入格式
function IsDateString(sDate) {
var iaMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
var iaDate = new Array(3)
var year, month, day
if (arguments.length != 1) return false
iaDate = sDate.toString().split("-")
if (iaDate.length != 3) return false
if (iaDate[1].length > 2 || iaDate[2].length > 2) return false
year = parseFloat(iaDate[0])
month = parseFloat(iaDate[1])
day = parseFloat(iaDate[2])
if (year < 1900 || year > 2100) 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
}
function IsDatetime(startTime, endTime) {
var ass, aD, aS;
var bss, bD, bS;
var begin = startTime; //起始时间;
var over = endTime; //终止时间;
ass = begin.split("-"); //以"-"分割字符串,返回数组;
aD = new Date(ass[0], ass[1], ass[2]); //格式化为Date对像;
aS = aD.getTime(); //得到从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数
bss = over.split("-");
bD = new Date(bss[0], bss[1], bss[2]);
bS = bD.getTime();
if (aS > bS) {
return false;
}
else {
return true;
}
}
//-------------------------
function regInput(obj, reg, inputStr) {
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
return reg.test(str)
}
//验证邮编
function isRightPostCode(str1) {
var sun = str1;
var pattern = /^[0-9]{6}$/;
if (pattern.test(sun) == false) {
return false;
}
else {
return true;
}
}
//验证身份证号
function isIdCard(idcard) {
idcard = idcard.toUpperCase();
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, 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]);
return false;
}
//身份号码位数及格式检验
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)) return true;
else {
//alert(Errors[2]);
return false;
}
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; //检测ID的校验位
else {
//alert(Errors[3]);
return false;
}
}
else {
//alert(Errors[2]);
return false;
}
break;
default:
//alert(Errors[1]);
return false;
break;
}
}
//验证手机号
function isMobile(infor) {
var reg = /^0*(13|15)\d{9}$/;
if (reg.test(infor)) {
return true;
}
}
//验证电话
function isTel(tel) {
var str = tel;
var Expression = /^\d+(\.\d+)?$/;
var objExp = new RegExp(Expression);
if (objExp.test(str) == true) {
return true;
} else {
return false;
}
}
//必须输入数字
function MustNumber()
{ if (((event.keyCode >= 48) && (event.keyCode <= 57)) || (event.keyCode == 46)) { event.returnValue = true; } else { event.returnValue = false; } }
//必须输入字母
function MustLetter() {
if (((event.keyCode >= 65) && (event.keyCode <= 90)) || (event.keyCode == 46)) { event.returnValue = true; } else { event.returnValue = false; }
}
//比较时间
function CheckDate(bdate, edate) {
var bvalue = document.getElementById(bdate).value;
var evalue = document.getElementById(edate).value;
if (bvalue != null && bvalue != "undefind" && evalue != null && evalue != "undefind") {
if (bvalue.length > 9 && evalue.length > 9) {
var bvalus = bvalue.split("-");
var evalus = evalue.split("-");
var d1 = new Date(bvalus[0], bvalus[1], bvalus[2]);
var d2 = new Date(evalus[0], evalus[1], evalus[2]);
if (Date.parse(d1) - Date.parse(d2) >= 0) {
//alert("开始时间应该大于结束时间");
return false;
}
else {
return true;
}
}
}
else {
return true;
}
}
//验证是否为正整数
function IsInteger(value) {
var re = /^[0-9]+[0-9]*]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
if (!re.test(value)) {
return false;
}
return true;
}
//验证最小长度
function IsMinLength(value, minlength) {
var datalength = DataLength(value);
if (datalength >= minlength) {
return true;
}
else {
return false;
}
}
//验证最大长度
function IsMaxLength(value, maxlength) {
var datalength = DataLength(value);
if (datalength <= maxlength) {
return true;
}
else {
return false;
}
}
//比较两个控件的值
function CompareValue(id1, id2) {
if ($("#" + id1).val() == $("#" + id2).val()) {
return true;
}
else {
return false;
}
}
//提示验证信息 可在自定也页面上重写该方法
function ValidateAlert(message, id) {
alert(message);
}
//提示所有验证信息 可在自定也页面上重写该方法
function ValidateAlertAll(message) {
var alertInfo = "";
$.each(message.split(";"), function (index, Value) {
if (Value != "") {
alertInfo += Value.split(",")[0] + "\n";
}
})
alert(alertInfo);
}
//正确回调函数 可重写
function SetRight(inputid) {
return;
}
//判断是否是汉字
function isHz(s, i) {
if (s.charCodeAt(i) < 255) return false;
else return true;
}
//判断是否为字节长度
function DataLength(fData) {
var intLength = 0
for (var i = 0; i < fData.length; i++) {
if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255))
intLength = intLength + 2
else
intLength = intLength + 1
}
return intLength
}
**通用文本验证Jquery版
**Create by jeffwang
**2011-06-17
**说明:此版本基于Jquery编写,要预先引入Jquery库文件
**可在自定义页面上重写 ValidateAlert ValidateAlertAll 两个提示方法
**参数说明:
1.buttonID:发起页面验证的按钮ID; 多按钮可以用";"分割
2.lostFocus:是否在控件失去焦点时发起验证 (true:是,false:否)
3.FaultCss:控件中信息发生错误时切换的Css 如果没有则可以给""值
**使用说明:
1.在页面的onload事件中初始化 验证对象 例:$(function () { var iva = new InputValidate(buttonID = "button1", lostFocus = false, FaultCss = ""); })
2.给页面上待验证的控件标记属性regex,多条验证规则以";"分割,格式为【验证规则:错误提示信息;验证规则:提示错误信息...】 例:<input type="text" regex="mustinput:必须输入邮箱;email:邮箱格式不正确" id="email"/>
3.时间比较验证格式 checkData:id1*id2,wrongMessage; 例 <input id="OnboardDate" regex="checkData:OnboardDate*ContractEnd,合同结束日期必须大于入职日期;" type="text" />
4.比较两个控件的值 compareValue:id1*id2,wrongMessage;例 <input id="RePassword" regex="compareValue:Password*RePassword,两次密码必须一致;" type="text" />
5.最小长度:minLength:minLength,wrongMessage 例 <input id="RePassword" minLength:6,密码不能少于6个字符; type="text" />
验证规则标记说明:
email:验证邮箱
url:验证网址
postnumber:验证邮编
area:验证区号
money:验证货币
cess:验证税率
card:身份证号
date:验证时间
mobile:验证手机
tel:验证电话号码
mustint:验证是正整数
mustinput:必填
checkData:时间比较
mustNumber:限制文本框必须填入数字
*/
/*验证器构造函数*/
function InputValidate() {
//验证发起的按钮ID
var buttonID;
//是否在焦点失去时验证
var lostFocus = true;
//验证控件错误时切换的Class名称
var FaultCss;
this.Init();
}
InputValidate.prototype.Init = function () {
var faultCss = FaultCss;
var inputcontrols = $("[regex]");
$.each(inputcontrols, function (index, Value) {
var inputid = $(Value).attr("id");
var Rules = $(Value).attr("regex").split(";");
$.each(Rules, function (i, Value) {
if (Value != "") {
var ruleArry = Value.split(":");
switch (ruleArry[0]) {
//邮箱
case "email":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isEmail($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "") {
$(this).addClass(faultCss);
}
ValidateAlert(ruleArry[1], inputid); ;
$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//网址
case "url":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isURL2($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//邮编
case "postnumber":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isRightPostCode($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//区号
case "area":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (area($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//货币
case "money":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isMoney($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//税率
case "cess":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isCess($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//身份证号
case "card":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isIdCard($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//时间大小校验
case "checkData":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
var idstart = (ruleArry[1].split(",")[0]).split("*")[0];
var idend = (ruleArry[1].split(",")[0]).split("*")[1];
if (CheckDate(idstart, idend)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
});
}
break;
//比较两个控件的值
case "compareValue":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
var id1 = (ruleArry[1].split(",")[0]).split("*")[0];
var id2 = (ruleArry[1].split(",")[0]).split("*")[1];
if (CompareValue(id1, id2)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
});
}
break;
//时间
case "date":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsDateString($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//手机
case "mobile":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isMobile($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//电话号码
case "tel":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (isTel($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//整形
case "mustint":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsInteger($(this).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//最小长度
case "minLength":
var minLength = ruleArry[1].split(",")[0];
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsMinLength($(this).val(), minLength)) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//最大长度
case "maxLength":
var maxLength = ruleArry[1].split(",")[0];
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($(this).val() != "") {
if (IsMaxLength($(this).val(), maxLength)) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1].split(",")[1], inputid);
//$(this).focus();
//event.returnValue = false;
return false;
}
}
});
}
break;
//必填
case "mustinput":
if (lostFocus) {
$("#" + inputid).bind("blur", function () {
if ($.trim($(this).val()) != "") {
if (faultCss != "") {
$(this).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "")
{ $(this).addClass(faultCss); }
ValidateAlert(ruleArry[1], inputid); ;
//$(this).focus();
//event.returnValue = false;
return false;
}
});
}
break;
//必须输入数字
case "mustNumber":
$("#" + inputid).bind("keypress", MustNumber);
break;
//必须输入字母
case "mustLetter":
$("#" + inputid).bind("keypress", MustLetter);
break;
default:
break;
}
}
})
});
/*
绑定验证按钮
*/
var buttonIds = buttonID.split(";")
$.each(buttonIds, function (index, Value) {
if (Value == "") { return; }
$("#" + Value).bind("click", function () {
inputcontrols = $("[regex]");
var wrongMessage = "";
$.each(inputcontrols, function (index, Value) {
var inputid = $(Value).attr("id");
var Rules = $(Value).attr("regex").split(";");
$.each(Rules, function (i, Value) {
if (Value != "") {
var ruleArry = Value.split(":");
switch (ruleArry[0]) {
//邮箱
case "email":
if ($("#" + inputid).val() != "") {
if (isEmail($("#" + inputid).val())) {
if (faultCss != "") { $(this).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//网址
case "url":
if ($("#" + inputid).val() != "") {
if (isURL2($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//邮编
case "postnumber":
if ($(this).val() != "") {
if (isRightPostCode($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//区号
case "area":
if ($("#" + inputid).val() != "") {
if (area($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//货币
case "money":
if ($("#" + inputid).val() != "") {
if (isMoney($("#" + inputid).val())) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
SetRight(inputid);
}
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//税率
case "cess":
if ($("#" + inputid).val() != "") {
if (isCess($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//身份证号
case "card":
if ($("#" + inputid).val() != "") {
if (isIdCard($("#" + inputid).val())) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//时间
case "date":
if ($("#" + inputid).val() != "") {
if (IsDateString($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//手机
case "mobile":
if ($("#" + inputid).val() != "") {
if (isMobile($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//电话号码
case "tel":
if ($("#" + inputid).val() != "") {
if (isTel($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//正整数
case "mustint":
if ($("#" + inputid).val() != "") {
if (IsInteger($("#" + inputid).val())) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
}
break;
//必填
case "mustinput":
if ($.trim($("#" + inputid).val()) != "") {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1] + "," + inputid + ";";
}
break;
//最小长度
case "minLength":
var minLength = ruleArry[1].split(",")[0];
if ($("#" + inputid).val() != "") {
if (IsMinLength($("#" + inputid).val(), minLength)) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";";
}
}
break;
//最大长度
case "maxLength":
var maxLength = ruleArry[1].split(",")[0];
if ($("#" + inputid).val() != "") {
if (IsMaxLength($("#" + inputid).val(), maxLength)) {
if (faultCss != "") { $("#" + inputid).removeClass(faultCss); }
SetRight(inputid);
}
else {
if (faultCss != "")
{ $("#" + inputid).addClass(faultCss); }
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";";
}
}
break;
//时间比较
case "checkData":
var idstart = (ruleArry[1].split(",")[0]).split("*")[0];
var idend = (ruleArry[1].split(",")[0]).split("*")[1];
if (CheckDate(idstart, idend)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";"
}
break;
//比较两个控件的值
case "compareValue":
var id1 = (ruleArry[1].split(",")[0]).split("*")[0];
var id2 = (ruleArry[1].split(",")[0]).split("*")[1];
if (CompareValue(id1, id2)) {
if (faultCss != "") {
$("#" + inputid).removeClass(faultCss);
}
SetRight(inputid);
}
else {
if (faultCss != "") {
$("#" + inputid).addClass(faultCss);
}
wrongMessage += ruleArry[1].split(",")[1] + "," + inputid + ";";
}
break;
default:
break;
}
}
})
});
if ($.trim(wrongMessage) != "") {
ValidateAlertAll(wrongMessage);
return false;
}
});
});
}
//验证邮箱
function isEmail(src) {
// var emailPat = /^(.+)@(.+)$/;
var emailPat = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
var matchArray = src.match(emailPat);
if (matchArray == null) {
return false;
}
return true;
}
//验证网址
function isURL(str_url) {
var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
+ "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+ "|" // 允许IP和DOMAIN(域名)
+ "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
var re = new RegExp(strRegex);
//re.test()
if (re.test(str_url)) {
// alert("正确");
return (true);
} else {
// alert("错误");
return (false);
}
}
//第二种验证表达式"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"
function isURL2(str_url) {
//var strRegex = "^http://(([a-zA-z0-9]|-){1,}\\.){1,}[a-zA-z0-9]{1,}-*";
var strRegex = "^http://(www\.){0,1}.+\.(com|net|cn)$";
var strRegex2 = "^https://(www\.){0,1}.+\.(com|net|cn)$";
var re = new RegExp(strRegex);
var re2 = new RegExp(strRegex2);
//re.test()
if (re.test(str_url) || re2.test(str_url)) {
// alert("正确");
return (true);
} else {
// alert("错误");
return (false);
}
}
//验证区号
function area(src) {
var phoneAreaNum = /^\d{3,4}$/;
if (re.test(src)) {
return true;
}
else {
return false;
}
}
//这个是判断输入的是否为货币值 最多小数点后4位
function isMoney(src) {
isMoneys = /^-?\d+\.{0,}\d{0,}$/;
if (isMoneys.test(src.replace(/,/g, ""))) {
return true;
}
}
//这个是判断输入的是税率 最多小数点后2位
function isCess(src) {
isMoneys = /^\-[0-9]+\.[0-9]{0,2}$/;
if (isMoneys.test(src)) {
return true;
}
}
//这个是判断输入的是否是整数
function isCount(src) {
isMoney = /^[0-9]\d*$/;
if (isMoney.test(src)) {
return true;
}
else {
return false;
}
}
//验证时间输入格式
function IsDateString(sDate) {
var iaMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
var iaDate = new Array(3)
var year, month, day
if (arguments.length != 1) return false
iaDate = sDate.toString().split("-")
if (iaDate.length != 3) return false
if (iaDate[1].length > 2 || iaDate[2].length > 2) return false
year = parseFloat(iaDate[0])
month = parseFloat(iaDate[1])
day = parseFloat(iaDate[2])
if (year < 1900 || year > 2100) 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
}
function IsDatetime(startTime, endTime) {
var ass, aD, aS;
var bss, bD, bS;
var begin = startTime; //起始时间;
var over = endTime; //终止时间;
ass = begin.split("-"); //以"-"分割字符串,返回数组;
aD = new Date(ass[0], ass[1], ass[2]); //格式化为Date对像;
aS = aD.getTime(); //得到从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数
bss = over.split("-");
bD = new Date(bss[0], bss[1], bss[2]);
bS = bD.getTime();
if (aS > bS) {
return false;
}
else {
return true;
}
}
//-------------------------
function regInput(obj, reg, inputStr) {
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
return reg.test(str)
}
//验证邮编
function isRightPostCode(str1) {
var sun = str1;
var pattern = /^[0-9]{6}$/;
if (pattern.test(sun) == false) {
return false;
}
else {
return true;
}
}
//验证身份证号
function isIdCard(idcard) {
idcard = idcard.toUpperCase();
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, 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]);
return false;
}
//身份号码位数及格式检验
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)) return true;
else {
//alert(Errors[2]);
return false;
}
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; //检测ID的校验位
else {
//alert(Errors[3]);
return false;
}
}
else {
//alert(Errors[2]);
return false;
}
break;
default:
//alert(Errors[1]);
return false;
break;
}
}
//验证手机号
function isMobile(infor) {
var reg = /^0*(13|15)\d{9}$/;
if (reg.test(infor)) {
return true;
}
}
//验证电话
function isTel(tel) {
var str = tel;
var Expression = /^\d+(\.\d+)?$/;
var objExp = new RegExp(Expression);
if (objExp.test(str) == true) {
return true;
} else {
return false;
}
}
//必须输入数字
function MustNumber()
{ if (((event.keyCode >= 48) && (event.keyCode <= 57)) || (event.keyCode == 46)) { event.returnValue = true; } else { event.returnValue = false; } }
//必须输入字母
function MustLetter() {
if (((event.keyCode >= 65) && (event.keyCode <= 90)) || (event.keyCode == 46)) { event.returnValue = true; } else { event.returnValue = false; }
}
//比较时间
function CheckDate(bdate, edate) {
var bvalue = document.getElementById(bdate).value;
var evalue = document.getElementById(edate).value;
if (bvalue != null && bvalue != "undefind" && evalue != null && evalue != "undefind") {
if (bvalue.length > 9 && evalue.length > 9) {
var bvalus = bvalue.split("-");
var evalus = evalue.split("-");
var d1 = new Date(bvalus[0], bvalus[1], bvalus[2]);
var d2 = new Date(evalus[0], evalus[1], evalus[2]);
if (Date.parse(d1) - Date.parse(d2) >= 0) {
//alert("开始时间应该大于结束时间");
return false;
}
else {
return true;
}
}
}
else {
return true;
}
}
//验证是否为正整数
function IsInteger(value) {
var re = /^[0-9]+[0-9]*]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
if (!re.test(value)) {
return false;
}
return true;
}
//验证最小长度
function IsMinLength(value, minlength) {
var datalength = DataLength(value);
if (datalength >= minlength) {
return true;
}
else {
return false;
}
}
//验证最大长度
function IsMaxLength(value, maxlength) {
var datalength = DataLength(value);
if (datalength <= maxlength) {
return true;
}
else {
return false;
}
}
//比较两个控件的值
function CompareValue(id1, id2) {
if ($("#" + id1).val() == $("#" + id2).val()) {
return true;
}
else {
return false;
}
}
//提示验证信息 可在自定也页面上重写该方法
function ValidateAlert(message, id) {
alert(message);
}
//提示所有验证信息 可在自定也页面上重写该方法
function ValidateAlertAll(message) {
var alertInfo = "";
$.each(message.split(";"), function (index, Value) {
if (Value != "") {
alertInfo += Value.split(",")[0] + "\n";
}
})
alert(alertInfo);
}
//正确回调函数 可重写
function SetRight(inputid) {
return;
}
//判断是否是汉字
function isHz(s, i) {
if (s.charCodeAt(i) < 255) return false;
else return true;
}
//判断是否为字节长度
function DataLength(fData) {
var intLength = 0
for (var i = 0; i < fData.length; i++) {
if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255))
intLength = intLength + 2
else
intLength = intLength + 1
}
return intLength
}