您的位置:首页 > 其它

Validator

2015-09-07 10:26 274 查看
//var dom = YAHOO.util.Dom ;

var attributes = {

color: {from:'#fff',to: '#fff'},

backgroundColor: { from:'#fff',to: '#e06' }

};

ValidatorClass = function()

{

this.Validator = Validator;

};

Validator = {

Require: /.+/,

Email1: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,

Email: /^\w+([-_.]\w+)*@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$/,

Phone: /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,

Mobile: /^((\(\d{3}\))|(\d{3}\-))?1(3|5|8){1}\d{9}$/,

Url: /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,

IdCard: /^\d{15}(\d{2}[A-Za-z0-9])?$/,

Currency: /^\d+(\.\d+)?$/,

Number: /^\d+$/,

Zip: /^[0-9]\d{5}$/,

QQ: /^[1-9]\d{4,8}$/,

Integer: /^[-\+]?\d+$/,

Double: /^[-\+]?\d+(\.\d+)?$/,

English: /^[A-Za-z0-9-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]+$/,

Chinese: /^[\u0391-\uFFE5]+$/,

NotOnlyNumber: "this.checkNotOnlyNumbermsg(value)",

UserName1: /^(([0-9]*)[A-Za-z_\u0391-\uFFE5]+([0-9]*))|(([A-Za-z_\u0391-\uFFE5]+)[0-9]+([A-Za-z_\u0391-\uFFE5]+))$/,

UserName: /^[A-Za-z_0-9\u4E00-\u9FA5]+$/,

UnSafe: /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,

Blank: /^[^\s]+$/,

SpecialChar: /^[^\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"!@#¥%&×+-——……]+$/,

NotNumber: /^[^\d]/,

NotSpecialChar: /^[^-_]/,

OnlyEnglish: /^[A-Za-z0-9]+$/,

IsSafe: function (str) { return !this.UnSafe.test(str); },

SafeString: "this.IsSafe(value)",

Limit: "this.limit(value.length,getAttribute('min'), getAttribute('max'))",

LimitB: "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",

Date: "this.IsDate(value, getAttribute('min'), getAttribute('format'))",

Repeat: "value == document.getElementsByName(getAttribute('to'))[0].value",

Range: "getAttribute('min') < value && value < getAttribute('max')",

Compare: "this.compare(value,getAttribute('operator'),getAttribute('to'))",

Custom: "this.Exec(value, getAttribute('regexp'))",

Group: "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",

ErrorItem: [document.forms[0]],

ErrorMessage: ["以下原因导致提交失败\t\t\t\t"],

IfError: [],

CurrentObj: [],

IsSlef: [],

ErrClass: "rp2",

SuccClass: "rp1",

Mode: "",

Validate: function (theForm, mode, isSlef, errMsg, dataType) {

var obj = theForm || event.srcElement;

this.CurrentObj = obj;

this.IsSlef = isSlef;

var count = isSlef ? 1 : obj.elements.length;

this.ErrorMessage.length = 1;

this.ErrorItem.length = 1;

this.ErrorItem[0] = obj;

this.Mode = mode;

for (var i = 0; i < count; i++) {

var eleObj = isSlef ? obj : obj.elements[i];

with (eleObj) {

var _dataType = (typeof (dataType) == "undefined") ? getAttribute("dataType") : dataType;

if (typeof (this[_dataType]) == "undefined" && mode == 1) continue;

this.ClearState(eleObj);

if (getAttribute("require") == "false" && value == "") continue;

var _dataTypeArr = _dataType.split(',');

for (var j = 0; j < _dataTypeArr.length; j++) {

var iferr = false;

switch (_dataTypeArr[j]) {

case "Date":

case "Repeat":

case "Range":

case "Compare":

case "Custom":

case "Group":

case "Limit":

case "LimitB":

case "SafeString":

case "NotOnlyNumber":

if (!eval(this[_dataTypeArr[j]])) {

this.AddError(i, (typeof (errMsg) == "undefined") ? getAttribute(_dataTypeArr[j] + "msg") : errMsg);

iferr = true;

}

break;

default:

if (!this[_dataTypeArr[j]].test(value)) {

this.AddError(i, (typeof (errMsg) == "undefined") ? getAttribute(_dataTypeArr[j] + "msg") : errMsg);

iferr = true;

}

break;

}

if (iferr) break;

}

}

}

if (this.ErrorMessage.length > 1) {

mode = mode || 1;

var errCount = this.ErrorItem.length;

switch (mode) {

case 0:

break;

case 2:

for (var i = 1; i < errCount; i++) {

//this.ErrorItem[i].style.color = "red";

validationAware.AddError(this.ErrorMessage[i].replace(/\d+:/, ""), true);

//alert(this.ErrorMessage[i].replace(/\d+:/,""));

break;

}

break;

case 1:

alert(this.ErrorMessage.join("\n"));

this.ErrorItem[1].focus();

break;

case 3:

for (var i = 1; i < errCount; i++) {

//try{

var errCon = document.getElementById(this.ErrorItem[i].id + "Tip");

if (typeof (errCon) != "undefined") {

//var anim = new YAHOO.util.ColorAnim(errCon.id, attributes);

errCon.className = this.ErrClass;

errCon.innerHTML = this.ErrorMessage[i].replace(/\d+:/, "");

//anim.animate();

} else {

var span = document.createElement("SPAN");

span.id = "__ErrorMessagePanel" + i;

span.className = "y23";

this.ErrorItem[i].parentNode.appendChild(span);

span.innerHTML = this.ErrorMessage[i].replace(/\d+:/, "");

//var x = dom.getX(this.ErrorItem[i]);

//var y = dom.getX(this.ErrorItem[i]);

//dom.setX(span.id,x);

}

//}

//catch(e){alert(e.description);}

}

//this.ErrorItem[1].focus();

break;

default:

alert(this.ErrorMessage.join("\n"));

break;

}

return false;

}

return true;

},

limit: function (len, min, max) {

min = min || 0;

max = max || Number.MAX_VALUE;

return min <= len && len <= max;

},

LenB: function (str) {

return str.replace(/[^\x00-\xff]/g, "**").length;

},

ClearState: function (elem) {

this.ClearErr(elem);

if (this.Mode == 3) {

with (elem) {

if (style.color == "red")

style.color = "";

var errCon = document.getElementById(id + "Tip");

errCon.className = this.SuccClass;

errCon.innerHTML = "";

return;

var lastNode = parentNode.childNodes[parentNode.childNodes.length - 1];

if (typeof (lastNode.id) != "undefined" && lastNode.id.indexOf("__ErrorMessagePanel") > -1)

parentNode.removeChild(lastNode);

}

}

},

AddError: function (index, str) {

this.ErrorItem[this.ErrorItem.length] = this.IsSlef ? this.CurrentObj : this.ErrorItem[0].elements[index];

this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;

this.IfError[this.IfError.length] = true;

},

ClearErr: function (elem) {

for (var i = 0; i > this.ErrorItem.length; i++) {

if (elem.id == this.ErrorItem[i].id) {

this.IfError[i] = true;

break;

}

}

},

Exec: function (op, reg) {

return new RegExp(reg, "g").test(op);

},

checkNotOnlyNumbermsg: function (op) {

var num = /^[-\+]?\d+$/

if (num.exec(op))

return false;

return true;

},

compare: function (op1, operator, op2) {

switch (operator) {

case "NotEqual":

return (op1 != op2);

case "GreaterThan":

return (op1 > op2);

case "GreaterThanEqual":

return (op1 >= op2);

case "LessThan":

return (op1 < op2);

case "LessThanEqual":

return (op1 <= op2);

default:

return (op1 == op2);

}

},

showTip: function () {

alert("msgtip");

var msgTip = this.CurrentObj.getAttribute("msgtip");

var errCon = document.getElementById(this.CurrentObj.id + "Tip");

errCon.className = "y21";

errCon.innerHTML = msgTip;

},

MustChecked: function (name, min, max) {

var groups = document.getElementsByName(name);

var hasChecked = 0;

min = min || 1;

max = max || groups.length;

for (var i = groups.length - 1; i >= 0; i--)

if (groups[i].checked) hasChecked++;

return min <= hasChecked && hasChecked <= max;

},

IsPass: function () {

for (var i = 0; i > this.ErrorItem.length; i++) {

if (this.IfError[i]) {

return false;

}

}

return true;

},

IsDate: function (op, formatString) {

formatString = formatString || "ymd";

var m, year, month, day;

switch (formatString) {

case "ymd":

m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));

if (m == null) return false;

day = m[6];

month = m[5]--;

year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));

break;

case "dmy":

m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));

if (m == null) return false;

day = m[1];

month = m[3]--;

year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));

break;

default:

break;

}

if (!parseInt(month)) return false;

month = month == 12 ? 0 : month;

var date = new Date(year, month, day);

//alert(date.getMonth());

return (typeof (date) == "object");

function GetFullYear(y) { return ((y < 30 ? "20" : "19") + y) | 0; }

},

ChangeClass: function (err, succ) {

this.ErrClass = err;

this.SuccClass = succ;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: