js ÑéÖ¤ ³£ÓÃÕýÔò±í´ïʽ¼¯½õ

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡<script>

¡¡¡¡/*************************************************

¡¡¡¡*************************************************/

¡¡¡¡Validator = {

¡¡¡¡Require : /.+/,

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

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

¡¡¡¡Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\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 : /^[1-9]\d{5}$/,

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

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

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

¡¡¡¡English : /^[A-Za-z]+$/,

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

¡¡¡¡Username : /^[a-z]\w{3,}$/i,

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

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

¡¡¡¡SafeString : "this.IsSafe(value)",

¡¡¡¡Filter : "this.DoFilter(value, getAttribute('accept'))",

¡¡¡¡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|0) && (value|0) < 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"],

¡¡¡¡Validate : function(theForm, mode){

¡¡¡¡var obj = theForm || event.srcElement;

¡¡¡¡var count = obj.elements.length;

¡¡¡¡this.ErrorMessage.length = 1;

¡¡¡¡this.ErrorItem.length = 1;

¡¡¡¡this.ErrorItem[0] = obj;

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

¡¡¡¡with(obj.elements[i]){

¡¡¡¡var _dataType = getAttribute("dataType");

¡¡¡¡if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined") continue;

¡¡¡¡this.ClearState(obj.elements[i]);

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

¡¡¡¡switch(_dataType){

¡¡¡¡case "Date" :

¡¡¡¡case "Repeat" :

¡¡¡¡case "Range" :

¡¡¡¡case "Compare" :

¡¡¡¡case "Custom" :

¡¡¡¡case "Group" :

¡¡¡¡case "Limit" :

¡¡¡¡case "LimitB" :

¡¡¡¡case "SafeString" :

¡¡¡¡case "Filter" :

¡¡¡¡if(!eval(this[_dataType])) {

¡¡¡¡this.AddError(i, getAttribute("msg"));

¡¡¡¡}

¡¡¡¡break;

¡¡¡¡default :

¡¡¡¡if(!this[_dataType].test(value)){

¡¡¡¡this.AddError(i, getAttribute("msg"));

¡¡¡¡}

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡if(this.ErrorMessage.length > 1){

¡¡¡¡mode = mode || 1;

¡¡¡¡var errCount = this.ErrorItem.length;

¡¡¡¡switch(mode){

¡¡¡¡case 2 :

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

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

¡¡¡¡case 1 :

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

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

¡¡¡¡break;

¡¡¡¡case 3 :

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

¡¡¡¡try{

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

¡¡¡¡span.id = "__ErrorMessagePanel";

¡¡¡¡span.style.color = "red";

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

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

¡¡¡¡}

¡¡¡¡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){

¡¡¡¡with(elem){

¡¡¡¡if(style.color == "red")

¡¡¡¡style.color = "";

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

¡¡¡¡if(lastNode.id == "__ErrorMessagePanel")

¡¡¡¡parentNode.removeChild(lastNode);

¡¡¡¡}

¡¡¡¡},

¡¡¡¡AddError : function(index, str){

¡¡¡¡this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];

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

¡¡¡¡},

¡¡¡¡Exec : function(op, reg){

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

¡¡¡¡},

¡¡¡¡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);

¡¡¡¡}

¡¡¡¡},

¡¡¡¡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;

¡¡¡¡},

¡¡¡¡DoFilter : function(input, filter){

¡¡¡¡return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);

¡¡¡¡},

¡¡¡¡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]*1;

¡¡¡¡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]*1;

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

¡¡¡¡break;

¡¡¡¡default :

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡if(!parseInt(month)) return false;

¡¡¡¡month = month==0 ?12:month;

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

¡¡¡¡return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());

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

¡¡¡¡}

¡¡¡¡}

¡¡¡¡</script>