===========================
& lttitle & gt特裏。表單驗證驗證程序
& ltstyle & gt
body,TD { font:normal 12px Verdana;顏色:#333333}
input,textarea,select,TD { font:normal 12px Verdana;顏色:# 333333;邊框:1px固體# 999999;背景:#ffffff}
表{ border-collapse:collapse;}
td{padding:3px}
輸入{身高:20;}
textarea {寬度:80%;高度:50pxoverfmin:自動;}
表單{display:inline}
& lt/style & gt;
& lttable align="center " >
& ltform name = " the form " id = " demo " action = " " method = " get " onSubmit = " return Validator。Validate(this,2)" & gt;
& lttr & gt
& lttd & gt實名:& lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt英文名: & lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt主頁:
& lt/tr & gt;
& lttr & gt
& lttd & gt密碼:
& lt/tr & gt;
& lttr & gt
& lttd & gt重復:
& lt/tr & gt;
& lttr & gt
& lttd & gt郵箱: & lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt郵箱: & lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gtQQ:& lt;/TD & gt;& lttd & gt& ltinput name = " QQ " require = " false " datatype = " QQ " msg = " QQ號碼不存在" > & lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt身份證: & lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt年齡:
& lt/tr & gt;
& lttr & gt
& lttd & gt年齡1:& lt;/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt電話:& lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt手機:& lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt生日: & lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt郵政編碼:& lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt郵政編碼:& lt/TD & gt;
& lt/tr & gt;
& lttr & gt
& lttd & gt操作系統:& lt選項值= " " & gt選擇您的操作系統
& lt/tr & gt;
& lttr & gt
& lttd & gt位置:北京
& lt/tr & gt;
& lttr & gt
& lttd & gt愛好:
& lt/tr & gt;
& lttd & gt自我介紹:中文是壹個單詞
& lt/tr & gt;
& lttd & gt自傳:中文是兩個字節t
& lt/tr & gt;
& lttr & gt
& lttd colspan="2 " >& lt輸入name = " submit " type = " submit " value = " confirm submission " > & lt;inputonclick = " validator . validate(document . getelementbyid(' demo ')" value = " inspection mode 1 " type = " button " & gt;& ltInputonclick = "validator。驗證(文檔。getelementbyid ('demo '),2)" value = "測試模式2 " type = " button " & gt& ltInputonclick = "validator。驗證(文檔。getelementbyid ('demo '),3)" value = "測試模式3 " type = " button " & gt& lt/TD & gt;
& lt/tr & gt;
& lt/form & gt;
& lt/table & gt;
& lt腳本& gt
驗證器= {
要求:/。+/,
電子郵件:/^\w+([-+.]\w+)*@\w+([-。]\w+)*\。\w+([-。]\w+)*$/,
電話:/^((\(\d{3}\))|(\d{3}\-)?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
手機:/^((\(\d{3}\))|(\d{3}\-)?13 { 9 } $/,
網址:/^pare(value,getattribute('operator'),getattribute('to'))",
風俗:“這個。Exec(value,getAttribute('regexp ')",
群:“這個。MustChecked(getAttribute('name '),getAttribute('min '),getAttribute('max ')",
ErrorItem : [document.forms[0]],
錯誤消息:["提交失敗,原因如下:\t\t\t"],
驗證:函數(形式,模式){
var obj = the form | | event . srcelement;
var count = obj . elements . length;
這個。error message . length = 1;
這個。error item . length = 1;
這個。錯誤item[0]= obj;
for(var I = 0;我& lt數數;i++){
with(obj.elements[i]){
var _ dataType = get attribute(" dataType ");
if(type of(_ dataType)= = " object " | | type of(this[_ dataType])= = " undefined ")繼續;
這個。ClearState(obj . elements[I]);
if(get attribute(" require ")= = " false " & amp;& ampvalue == " ")繼續;
開關(_數據類型){
案例“日期”:
案例“重復”:
案例“範圍”:
案例“比較”:
案例“自定義”:
案例“組”:
案例“限制”:
案例“LimitB”:
案例“安全字符串”:
如果(!eval(this[_ dataType]){
這個。AddError(i,getAttribute(" msg "));
}
打破;
默認值:
如果(!此[_數據類型]。測試(值)){
這個。AddError(i,getAttribute(" msg "));
}
打破;
}
}
}
如果(這個。錯誤消息。長度& gt1){
mode = mode | | 1;
var errCount = this。錯誤item . length;
開關(模式){
案例二:
for(var I = 1;我& lterrCounti++)
這個。error item[I]. style . color = " red ";
案例1:
警惕(這個。error message . join(" \ n ");
這個。錯誤Item[1]。焦點();
打破;
案例三:
for(var I = 1;我& lterrCounti++){
嘗試{
var SPAN = document . createelement(" SPAN ");
span . id = " _ _ error message panel ";
span . style . color = " red ";
這個。error item[I]. parent node . append child(span);
span.innerHTML = this。錯誤消息[i]。替換(/\d+:/," * ");
}
catch(e){ alert(e . description);}
}
這個。錯誤Item[1]。焦點();
打破;
默認值:
警惕(這個。error message . join(" \ n ");
打破;
}
返回false
}
返回true
},
極限:函數(長度,最小值,最大值){
min = min | | 0;
max = max || Number。MAX _ VALUE
返回最小值& ltlen & amp& amplen & lt= max
},
LenB:函數(字符串){
返回str.replace(/[^\x00-\xff]/g,"**").長度;
},
ClearState:函數(elem){
帶有(elem){
if(style.color == "red ")
style.color =
var lastNode = parent node . child nodes[parent node . child nodes . length-1];
if(lastnode . id = = " _ _ error message panel ")
parent node . remove child(lastNode);
}
},
AddError:函數(index,str){
這個。ErrorItem[this。ErrorItem.length] = this。錯誤項[0]。元素[索引];
這個。錯誤消息[this。ErrorMessage.length] =這。error message . length+":"+str;
},
Exec : function(op,reg){
返回新的RegExp(reg," g ")。測試(op);
},
比較:函數(op1,運算符,op2){
開關(操作員){
案例“不等”:
return (op1!= op2);
案例“GreaterThan”:
return(op 1 & gt;op2);
案例“GreaterThanEqual”:
return(op 1 & gt;= op2);
案例“小於”:
return(op 1 & lt;op2);
案例“小於等於”:
return(op 1 & lt;= op2);
默認值:
return(op 1 = = op2);
}
},
MustChecked : function(name,min,max){
var groups = document . getelementsbyname(name);
var has checked = 0;
min = min | | 1;
max = max | | groups.length
for(var I = groups . length-1;我& gt=0;我-)
if(組[i].checked)has checked++;
返回最小值& lt= hasChecked & amp& amphasChecked & lt= max
},
IsDate : function(op,formatString){
format string = format string | | " ymd ";
var m,年,月,日;
開關(格式字符串){
案例“ymd”:
m = op.match(新regexp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2 })$ ");
if(m == null)返回false
day = m[6];
月= m[5]-;
年份= (m[2])。長度== 4)?m[2] : GetFullYear(parseInt(m[3],10));
打破;
案例“dmy”:
m = op.match(新RegExp("^(\\d{1,2})([-./])(\\d{1,2 })\ \ 2((\ \ d { 4 })|(\ \ d { 2 })$ ");
if(m == null)返回false
day = m[1];
月= m[3]-;
年份= (m[5])。長度== 4)?m[5] : GetFullYear(parseInt(m[6],10));
打破;
默認值:
打破;
}
如果(!parseInt(month))返回false
月=月==12?0:月;
var date =新日期(年、月、日);
return(type of(date)= = " object " & amp;& ampyear = = date . get full year()& amp;& ampmonth = = date . getmonth()& amp;& ampday = = date . getdate());
function get full year(y){ return((y & lt;30 ?" 20 ":" 19 ")+y)| 0;}
}
}
& lt/script & gt;