<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    用正則表達式和javascript對表單進行全面驗證

    代碼:<!--
    使用時請將下面的javascript代碼存到一個單一的js文件中。
    1、表單要求
    ?<form name="formname" onSubmit="return validateForm(this)"></form>
    ?將對表單中的所有以下類型的域依次驗證,所有驗證是去除了前導(dǎo)和后綴空格的,要注意是區(qū)分大小寫的。
    2、空值驗證
    ?表單中任意域加上emptyInfo屬性將對此域是否為空進行驗證(可以和最大長度驗證\一般驗證方式同時使用)。
    ?無此屬性視為此域允許空值。
      如:<input type="text" name="fieldNamename" emptyInfo="字段不能為空!">
    3、最大長度驗證(可以和空值驗證、一般驗證方式同時使用):
    ?<input type="text" name="fieldNamename" maxlength="20" lengthInfo="最大長度不能超過20!">
    ?或,<textarea maxlength="2000" lengthInfo="最大長度不能超過2000!">
    3、一般驗證方式(不對空值做驗證):
      如:<input type="text" validator="^(19|20)[0-9]{2}$" errorInfo="不正確的年份!" >
    4、標(biāo)準(zhǔn)驗證(不與其它驗證方式同時使用):
    ?全部通過<input type="hidden">來實現(xiàn),并且不需要name屬性以免提交到服務(wù)器。
      4.1、合法日期驗證:
    ??<input type="text" name="yearfieldName" value="2004">注:這里也可以是<select name="yearfieldName"></select>,以下同
    ??<input type="text" name="monthfieldName" value="02">
    ??<input type="text" name="dayfieldName" value="03">
    ??<input type="hidden" validatorType="DateGroup" year="yearfieldName" month="monthfieldName" day="dayfieldName" errorInfo="不正確的日期!">
    ??yearfieldName、monthfieldName、dayfieldName分別為年月日字段,月和日可以是兩位(MM)或一位格式(M),
    ??此處不對每個字段分別檢驗(如果要檢驗,請在年月日三個域分別使用前面的一般驗證方式),只對日期的最大值是否合法檢查;
    ?4.2、日期格式驗證(請注意,此驗證不對日期是否有效進行驗證,還未找到從格式中得到年月日數(shù)據(jù)的方法^_^):
    ??<input type="text" name="datefieldName" value="2003-01-03 21:31:00">
    ??<input type="hidden" validatorType="Date" fieldName="datefieldName"; format="yyyy-MM-dd HH:mm:ss" errorInfo="不正確的日期!">
    ??其中格式僅對y、M、d、H、m、s進行支持(其它字符視為非時間的字符)
    ?4.3、列表驗證:
    ??檢驗列表(checkbox、redio、select)是否至少選中了一條記錄(對select主要用于多項選擇)
    ??<input type="checkbox" name="checkbox1">
    ??<input type="hidden" validatorType="Checkbox" fieldName="checkbox1" errorInfo="請至少選中一條記錄!">
    ??其中validatorType可以是Checkbox、R、Select;
    ??對于一個select表單,如果要求選擇一條不能是第一條的記錄,請用下列方式:
    ??<select name="select1" emptyInfo="請選擇一個選項!">
    ??<option value="">==請選擇==</option>
    ??<option value="1">1</option>
    ??<select>
    ?4.4、Email驗證:
    ??<input type="text" name="email">
    ??<input type="hidden" fieldName="email" validatorType="Email" separator="," errorInfo="不正確的Email!">
    ??其中separator為可選項,表示輸入多個email時的分隔符(無此選項只能是一個地址)
    ?4.5、加入其它javascript操作:
    ?<script type="text/javascript">
    ??function functionname(){
    ??? 自定義方法
    ??}
    ?</script>
    ?表單中加入<input type="hidden" validatorType="javascript" functionName="functionname">(此時emptyInfo等屬性無效)
    ??時將調(diào)用function屬性中指定的javascript方法(要求方法返回true或false,返回false將不再驗證表單,也不提交表單)。
    5、在表單通過驗證提交前disable一個按鈕(也可將其它域disable,不能與其它驗證同在一個域),不要求按鈕是表單中的最后一個
    ?<input type="button" name="提交" validatorType="disable">
    6、不驗證表單
      <input type="hidden" name="validate" value="0" functionName="functionname">
    ?當(dāng)validator域值為0時不對表單進行驗證,直接提交表單或執(zhí)行指定function并返回true后提交表單
    ?functionName為可選


    -->
    <script type="text/javascript">
    function getStringLength(str){
    ? var endvalue=0;
    ? var sourcestr=new String(str);
    ? var tempstr;
    ? for (var strposition = 0; strposition < sourcestr.length; strposition ++) {
    ??? tempstr=sourcestr.charAt(strposition);
    ??? if (tempstr.charCodeAt(0)>255 || tempstr.charCodeAt(0)<0) {
    ????? endvalue=endvalue+2;
    ??? } else {
    ????? endvalue=endvalue+1;
    ??? }
    ? }
    ? return(endvalue);
    }
    function trim(str){
    ? if(str==null) return "";
    ? if(str.length==0) return "";
    ? var i=0,j=str.length-1,c;
    ? for(;i<str.length;i++){
    ??? c=str.charAt(i);
    ??? if(c!=' ') break;
    ? }
    ? for(;j>-1;j--){
    ??? c=str.charAt(j);
    ??? if(c!=' ') break;
    ? }
    ? if(i>j) return "";
    ? return str.substring(i,j+1);
    }
    function validateDate(date,format,alt){
    ? var time=trim(date.value);
    ? if(time=="") return;
    ? var reg=format;
    ? var reg=reg.replace(/yyyy/,"[0-9]{4}");
    ? var reg=reg.replace(/yy/,"[0-9]{2}");
    ? var reg=reg.replace(/MM/,"((0[1-9])|1[0-2])");
    ? var reg=reg.replace(/M/,"(([1-9])|1[0-2])");
    ? var reg=reg.replace(/dd/,"((0[1-9])|([1-2][0-9])|30|31)");
    ? var reg=reg.replace(/d/,"([1-9]|[1-2][0-9]|30|31))");
    ? var reg=reg.replace(/HH/,"(([0-1][0-9])|20|21|22|23)");
    ? var reg=reg.replace(/H/,"([0-9]|1[0-9]|20|21|22|23)");
    ? var reg=reg.replace(/mm/,"([0-5][0-9])");
    ? var reg=reg.replace(/m/,"([0-9]|([1-5][0-9]))");
    ? var reg=reg.replace(/ss/,"([0-5][0-9])");
    ? var reg=reg.replace(/s/,"([0-9]|([1-5][0-9]))");
    ? reg=new RegExp("^"+reg+"$");
    ? if(reg.test(time)==false){//驗證格式是否合法
    ??? alert(alt);
    ??? date.focus();
    ??? return false;
    ? }
    ? return true;
    }
    function validateDateGroup(year,month,day,alt){
    ? var array=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    ? var y=parseInt(year.value);
    ? var m=parseInt(month.value);
    ? var d=parseInt(day.value);
    ? var maxday=array[m-1];
    ? if(m==2){
    ??? if((y%4==0&&y%100!=0)||y%400==0){
    ????? maxday=29;
    ??? }
    ? }
    ? if(d>maxday){
    ??? alert(alt);
    ??? return false;
    ? }
    ? return true;
    }
    function validateCheckbox(obj,alt){
    ? var rs=false;
    ? if(obj!=null){
    ??? if(obj.length==null){
    ????? return obj.checked;
    ??? }
    ??? for(i=0;i<obj.length;i++){
    ????? if(obj[i].checked==true){
    ??????? return true;
    ????? }
    ??? }
    ? }
    ? alert(alt);
    ? return rs;
    }
    function validateRadio(obj,alt){
    ? var rs=false;
    ? if(obj!=null){
    ??? if(obj.length==null){
    ????? return obj.checked;
    ??? }
    ??? for(i=0;i<obj.length;i++){
    ????? if(obj[i].checked==true){
    ??????? return true;
    ????? }
    ??? }
    ? }
    ? alert(alt);
    ? return rs;
    }
    function validateSelect(obj,alt){
    ? var rs=false;
    ? if(obj!=null){
    ??? for(i=0;i<obj.options.length;i++){
    ????? if(obj.options[i].selected==true){
    ??????? return true;
    ????? }
    ??? }
    ? }
    ? alert(alt);
    ? return rs;
    }
    function validateEmail(email,alt,separator){
    ? var mail=trim(email.value);
    ? if(mail=="") return;
    ? var em;
    ? var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
    ? if(separator==null){
    ??? if(myReg.test(email.value)==false){
    ????? alert(alt);
    ????? email.focus();
    ????? return false;
    ??? }
    ? }
    ? else{
    ??? em=email.value.split(separator);
    ??? for(i=0;i<em.length;i++){
    ????? em[i]=em[i].trim();
    ????? if(em[i].length>0&&myReg.test(em[i])==false){
    ??????? alert(alt);
    ??????? email.focus();
    ??????? return false;
    ????? }
    ??? }
    ? }
    ? return true;
    }
    function validateForm(theForm){// 若驗證通過則返回true
    ? var disableList=new Array();
    ? var field = theForm.elements; // 將表單中的所有元素放入數(shù)組
    ? for(var i = 0; i < field.length; i++){
    ??? var vali=theForm.validate;
    ?if(vali!=null){
    ?? if(vali.value=="0"){
    ???? var fun=vali.functionName;
    ??if(fun!=null){
    ??? return eval(fun+"()");
    ??}
    ??else{
    ??? return true;
    ??}
    ?? }
    ?}


    ??? var empty=false;
    ??? var value=trim(field[i].value);
    ??? if(value.length==0){//是否空值
    ????? empty=true;
    ??? }
    ??? var emptyInfo=field[i].emptyInfo;//空值驗證
    ??? if(emptyInfo!=null&&empty==true){
    ????? alert(emptyInfo);
    ????? field[i].focus();
    ????? return false;
    ??? }
    ??? var lengthInfo=field[i].lengthInfo;//最大長度驗證
    ??? if(lengthInfo!=null&&getStringLength(value)>field[i].maxLength){
    ????? alert(lengthInfo);
    ????? field[i].focus();
    ????? return false;
    ??? }


    ??? var validatorType=field[i].validatorType;
    ??? if(validatorType!=null){//其它javascript
    ????? var rs=true;
    ????? if(validatorType=="javascript"){
    ??????? eval("rs="+field[i].functionName+"()");
    ??????? if(rs==false){
    ????????? return false;
    ??????? }
    ??????? else{
    ????????? continue;
    ??????? }
    ????? }
    ????? else if(validatorType=="disable"){//提交表單前disable的按鈕
    ??????? disableList.length++;
    ??????? disableList[disableList.length-1]=field[i];
    ??????? continue;
    ????? }
    ????? else if(validatorType=="Date"){
    ??????? rs=validateDate(theForm.elements(field[i].fieldName),field[i].format,field[i].errorInfo);
    ????? }
    ????? else if(validatorType=="DateGroup"){
    ??????? rs=validateDateGroup(theForm.elements(field[i].year),theForm.elements(field[i].month),theForm.elements(field[i].day),field[i].errorInfo);
    ????? }
    ????? else if(validatorType=="Checkbox"){
    ??????? rs=validateCheckbox(theForm.elements(field[i].fieldName),field[i].errorInfo);
    ????? }
    ????? else if(validatorType=="Radio"){
    ??????? rs=validateRadio(theForm.elements(field[i].fieldName),field[i].errorInfo);
    ????? }
    ????? else if(validatorType=="Select"){
    ??????? rs=validateSelect(theForm.elements(field[i].fieldName),field[i].errorInfo);
    ????? }
    ????? else if(validatorType=="Email"){
    ??????? rs=validateEmail(theForm.elements(field[i].fieldName),field[i].errorInfo);
    ????? }
    ????? else{
    ??????? alert("驗證類型不被支持, fieldName: "+field[i].name);
    ??????? return false;
    ????? }
    ????? if(rs==false){
    ??????? return false;
    ????? }
    ??? }
    ??? else{//一般驗證
    ????? if(empty==false){
    ??????? var v = field[i].validator; // 獲取其validator屬性
    ??????? if(!v) continue;??????????? // 如果該屬性不存在,忽略當(dāng)前元素
    ??????? var reg=new RegExp(v);
    ??????? if(reg.test(field[i].value)==false){
    ????????? alert(field[i].errorInfo);
    ????????? field[i].focus();
    ????????? return false;
    ??????? }
    ????? }
    ??? }
    ? }
    ? for(i=0;i<disableList.length;i++){
    ??? disableList[i].disabled=true;
    ? }
    ? return true;
    }
    </script>

    posted on 2006-09-18 13:49 77 閱讀(419) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(12)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    API文檔

    java開發(fā)與研究

    にほん

    上海房產(chǎn)

    東京生活

    數(shù)據(jù)庫大全

    編程與開發(fā)

    美國開發(fā)生活

    走向管理

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费高清av一区二区三区| 777爽死你无码免费看一二区| 夜夜嘿视频免费看| 亚洲女人18毛片水真多| 亚洲啪啪免费视频| 亚洲人成777在线播放| 99久久免费国产精品特黄| 亚洲一区二区久久| 日韩中文字幕免费| 国产亚洲欧美日韩亚洲中文色| 免费观看的av毛片的网站| 看全免费的一级毛片| 国产精品亚洲产品一区二区三区| 亚洲精品国产日韩无码AV永久免费网| 亚洲中文字幕无码专区| 国产精品免费AV片在线观看| 亚洲高清中文字幕| 91在线视频免费看| 国产av无码专区亚洲av毛片搜 | 一级片在线免费看| 国产亚洲人成A在线V网站| 精品免费视在线观看| 亚洲视频免费在线看| 四虎成人免费网址在线| 午夜在线免费视频 | 国产无遮挡又黄又爽免费网站| 亚洲中文字幕无码一区| 97视频免费观看2区| 亚洲人成电影网站色www| 亚洲国产成人久久综合一区77 | 亚洲精品第一国产综合境外资源| 黄色网页在线免费观看| 337p日本欧洲亚洲大胆精品555588| 国产日本一线在线观看免费| 国产成人亚洲精品电影| 亚洲第一极品精品无码久久| 日韩一区二区a片免费观看| 亚洲AV无码AV男人的天堂不卡| 亚洲人成色77777| 曰曰鲁夜夜免费播放视频| 菠萝菠萝蜜在线免费视频|