页面验证 简单飞扬

例子:仅供测试




注册帐号

密码

重新输入密码

身份证号码

银行存款

拥有几家世界500强企业

出生日期

下辈子出生日期

//这是把JS文件全放在了html里面  可以把里面的JS内容分出2个JS来   另外 身份证的验证  在另一文章里面
//http://www.cnblogs.com/jiandanfy/archive/2008/02/01/1061248.html
<html>
<head>
<title>简单星空 页面验证的例子</title>


</head>
<script>
    function onBtnSave() {
        form = document.forms[0];
        if(validateForm(form)) {
        alert("验证通过!");
        return;
        //    var url = "<c:url value='/emclass/saveAdd.do' />";
        //form.action = url;
        //    form.submit();
        }
        
    }
    
    
    
/////////////////////////////////////////////////////////////////////以下是 validate.js
    
    function validateForm(form) {

    return   validateRequired(form);
}

function required () {

    //添加或者一个新的验证类型  要在下面添加 一个新的验证类型  然后去validates.js里指定的位置增加相应的验证代码  
    //数组第一位是验证类型 第二位是表单元素的name 第三位是验证不通过时弹出来的警告信息 最后一个 扩展

    //最小长度
    this.r1 = new Array("minlength","passwd", "密码不能为空", new Function ("varName","this.minlength=1;return this[varName];"));
    this.r2 = new Array("minlength","boke", "博客园帐号不能为空  ", new Function ("varName","this.minlength=1;return this[varName];"));
    this.r3 = new Array("minlength","pking","身份证号码不能为空", new Function ("varName","this.minlength=1;return this[varName];"));
    this.r4 = new Array("minlength","bank","银行存款不能为空", new Function ("varName","this.minlength=1;return this[varName];"));

    //最大长度
    this.r5 = new Array("maxlength","passwd", "密码不能超过10位 ", new Function ("varName","this.maxlength=10;return this[varName];"));
    //负数
    this.r6 = new Array("negative","bank", "银行存款就不要填负数了 不能为负数");
    //整数
    this.r7 = new Array("int","company", "请务必正确填写你所拥有的世界500强企业的数目  此数目允许为负 ");
    //实数
    this.r8 = new Array("float","bank", "银行存款小数点后可以填2位 注意: 不允许超过一万  !", new Function ("varName","this.max=5;this.min=2;return this[varName];"));
    //身份证号码
    this.r9 = new Array("pking","pking", "请填写正确的身份证号码!");
    //两次密码确认
    this.r10 = new Array("passwd","passwd", "2次输入的密码不一样","passwds");
    //日期先后顺序   数组的第二位是第一次时间  第4位是第二次时间
    this.r11 = new Array("dateOrder","birthday", "日期顺序不对","birthdays");
    //日期格式验证  
    this.r12 = new Array("date","birthday", "日期格式填写错误", new Function ("varName","this.datePattern='yyyy-MM-dd';return this[varName];"));
    this.r13 = new Array("date","birthdays", "日期格式填写错误", new Function ("varName","this.datePattern='yyyy-MM-dd';return this[varName];"));
    //帐号格式  
    this.r14 = new Array("chn","boke", "帐号必须是中文");
    this.r15 = new Array("id","boke", "注册帐号格式应该是:字母开头,允许5-16字节,允许字母数字下划线");
    this.r16 = new Array("email","boke", "email格式填写错误");

}


    
////////////////////////////////////////////////////////////////////////// 以下是   validates.js    
    
    
  //去掉左右空格
function trim(s) {
 return s.replace( /^"s*/, "" ).replace( /"s*$/, "" );
}
//字串长度
function strLen(value){
     var str,Num = 0;
    
     for (var i=0;i<value.length;i++){
      str = value.substring(i,i+1);
      if (str<="~")  
        Num+=1;
      else
        Num+=2;
     }
    
     return Num;
 }
 //判断argvalue 字串中的每一个字符 是否在规定范围之内
function isAllDigits(argvalue) {
        argvalue = argvalue.toString();
        var validChars = "0123456789";
        var startFrom = 0;
        if (argvalue.substring(0, 2) == "0x") {
           validChars = "0123456789abcdefABCDEF";
           startFrom = 2;
        } else if (argvalue.charAt(0) == "0") {
           validChars = "01234567";
           startFrom = 1;
        } else if (argvalue.charAt(0) == "-") {
            startFrom = 1;
        }
        for (var n = startFrom; n < argvalue.length; n++) {
            if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
        }
        return true;
    }
    
//    通用取值函数        分三类进行取值 [文本输入框,单多选,多下拉菜单]
function getValue(field){
        var fType = field.type;
                    switch(fType) {
            case "text":
            case "hidden":
            case "password":
            case "file":
            case "textarea": return field.value;
            case "checkbox":
            case "radio": return GetValueChoose(field);
            case "select-one":
            case "select-multiple": return GetValueSel(field);
                                }
 //取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
        function GetValueChoose(field) {
            var sValue = "";
 //取得第一个元素的name,搜索这个元素组
            var tmpels = document.getElementsByName(field.name);
            for(var i=0;i<tmpels.length;i++)  {
                if(tmpels[i].checked)   {
                    sValue += "0";
                                            }
                            }
            return sValue;
                }
        function GetValueSel(field){
            var sValue = "";
            for(var i=0;i<field.options.length;i++) {
//单选下拉框提示选项设置为value=""
              if(field.options[i].selected && field.options[i].value!=""){
                    sValue += "0";
                                        }
                            }
            return sValue;
                    }
    }


//                            验证函数                                                
function validateRequired(form) {

          var isValid = true;
          var focusField = null;
          var i = 0;
          var fields = new Array();
          oRequired = new required();          
          for (x in oRequired) {
                          var valiType = oRequired[x][0];
                        var field = form[oRequired[x][1]];
                            if(typeof field =="#ff0000")    continue;
                             var value = getValue(field);    
                                 var a="";

                    switch(valiType) {
            case "minlength":    var minlength = parseInt(oRequired[x][3]("minlength")); a=vMinlength(value,minlength);break;    
            case "maxlength": var maxlength = parseInt(oRequired[x][3]("maxlength")); a=vMaxlength(value,maxlength);break;
                       case "negative":  a=vNegative(value);break;
                       case "int":  a=vInt(value);break;    
                       case "float":a=vFloat(value);break;
                     case "idcard":a=vIdcard(value);break;
                       case "passwd": value2 = getValue(form[oRequired[x][3]]); a=vPasswd(value,value2);break;
                       case "dateOrder":  value2 = getValue(form[oRequired[x][3]]); a=vDateOrder(value,value2);break;
                       case "date":   a=vDate(value);break;
                       case "id":   a=vId(value);break;
                       case "email":   a=vEmail(value);break;
                       case "chn":   a=vChn(value);break;
                               
                                }
                            //如果验证不通过
                            if (a) {
                                 if (i == 0)  focusField = field;
                                 fields[i++] = oRequired[x][2];
                                 isValid = false;
                             }
              }
         if (fields.length > 0) {
            focusField.focus();
            alert(fields.join('"n'));
          }
  return isValid;
}

//                        最小长度  (不能为空)
function vMinlength(value,minlength){
if(trim(value).length < minlength)return true;
}
//                        最大长度  
function vMaxlength(value,maxlength){
if(trim(value).length > maxlength)return true;
}
//                        不能有负号
function vNegative(value){
if(trim(value).indexOf("-")!=-1)return true;
}
//                        整数
function vInt(value) {
                if (value.length > 0) {
                    if (!isAllDigits(value))
                      return true;
                    else {
                     var iValue = parseInt(value);
                     if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647))
                          return true;
                                                     }
                                       }
}

//                    浮点数
function vFloat(value) {
                if (value.length > 0) {
                    // remove '.' before checking digits
                    var tempArray = value.split('.');
                    //Strip off leading '0'
                    var zeroIndex = 0;
                    var joinedString= tempArray.join('');
                    while (joinedString.charAt(zeroIndex) == '0') {
                        zeroIndex++;
                                                         }
                    var noZeroString = joinedString.substring(zeroIndex,joinedString.length);

                    if (!isAllDigits(noZeroString))
                                                            return true;
                    else {
                                    var iValue = parseFloat(value);
                                if (isNaN(iValue))
                                   return true;
                                 var fMin = parseFloat(oRequired[x][3]("min"));
                                 var fMax = parseFloat(oRequired[x][3]("max"));
                                 var intValue = '';
                                 var fragValue = '';
                                 var index = value.indexOf(".");
                                 if(index==-1){
                                    intValue = value;
                                 }else{
                                    intValue = value.substring(0,index);
                                    fragValue = value.substring(index+1);
                                                                     }
                                          if(  vInt(intValue) || vInt(fragValue) )
                                           return true;
                                  if (!(intValue.length <= fMax && fragValue.length <= fMin))
                                    return true;
                                                      }
                                        }
    }
    
 //                        密码确认    
function vPasswd(value,value2){
if(value!=value2)return true;
}
//                        时间顺序

function vDateOrder(date1,date2){
                var _date1 = date1.split("-");
                var d1=new Date(_date1[0],_date1[1],_date1[2]);
                
                var _date2 = date2.split("-");
                var d2=new Date(_date2[0],_date2[1],_date2[2]);
                if( d1.getTime()>=d2.getTime() )
             return true;

    }

//                    日期验证                                                                                                                
function vDate(value) {
if(trim(value).length!=0){

var date = value.split("-");
var yyyy = date[0], mm = date[1], dd = date[2];
var d=new Date(yyyy,mm,dd),year=d.getFullYear(),mon=d.getMonth(),day=d.getDate();
if ( year!=yyyy || mon!=mm || day!=dd ||!isValidDate(dd, mm, yyyy) )
    return true;
}
}
//日期 初步验证
function isValidDate(day, month, year) {
        if (month < 1 || month > 12) {
            return false;
        }
        if (day < 1 || day > 31) {
            return false;
        }
        if ((month == 4 || month == 6 || month == 9 || month == 11) &&
            (day == 31)) {
            return false;
        }
        if (month == 2) {
            var leap = (year % 4 == 0 &&
               (year % 100 != 0 || year % 400 == 0));
            if (day>29 || (day == 29 && !leap)) {
                return false;
            }
        }
        return true;
}
//注册帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
function vId(value){
if( !(/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/.test(value)))
return true;
}
    
//验证必需是中文
function vChn(value){
if( (/^[u4E00-u9FA5]+$/.test(value)))
       return true;
 }
//检查email邮箱
function vEmail(value){
  var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((".[a-zA-Z0-9_-]{2,3}){1,2})$/;
 if( !reg.test(value))return true;
}
    
    
</script>
<body background="119.jpg">
<form><br><br><br>
    <table align="center">
        
        <tr><td>
        博客园帐号</td><td>
        <input type="text" name="boke"></td></tr><tr><td> <br>
        密码</td><td>
        <input type="passwd" name="passwd"></td></tr><tr><td> <br>
        重新输入密码 </td><td>
        <input type="passwd" name="passwds"></td></tr><tr><td> <br>
        身份证号码 </td><td>
        <input type="text" name="pking"></td></tr><tr><td> <br>
        银行存款 </td><td>
        <input type="text" name="bank"></td></tr><tr><td> <br>
        拥有几家世界500强企业  </td><td>
        <input type="text" name="company"></td></tr><tr><td> <br>
        出生日期  </td><td>
        <input type="text" name="birthday"></td></tr><tr><td> <br>
        下辈子出生日期  </td><td>
        <input type="text" name="birthdays"></td></tr><br>
        
    </table><br>

    
    <table align="center">
    <tr>
        <td>
        <button  style="60px" onClick="onBtnSave()">保存</button>
        </td>
    </tr>
</table>

</form>
</body>
</html>

原文地址:https://www.cnblogs.com/jiandanfy/p/1053170.html