JavaScript常用验证脚本总结

来源:互联网 发布:软件编程入门自学视频 编辑:程序博客网 时间:2024/05/21 19:31

     转载请出自出处:http://eksliang.iteye.com/blog/2098985  

     下面这些验证脚本,是我在这几年开发中的总结,今天把他放出来,也算是一种分享吧,现在在我的项目中也在用!包括日期验证、比较,非空验证、身份证验证、数值验证、Email验证、电话验证等等...!

       下面这些方法都有一个特点,就是有两份,因为是表单验证,所以提供了两种实现方式,第一种传入的是表单的ID,另一种传入的是表单的值!

        我在下面附件中还附带了这个脚本的源文件!

/** *@author Ickes *下面很多方法都依赖这个方法 */function _$(id){return document.getElementById(id);}/** * @author Ickes * 传入一个字符串,删除字符串左右两边的空格 * @param str<br> *        要去除空格的字符串 * @param type<br> *        -如果不传则去掉两端的空格    <br> *        -如果为L或者l则去掉左边的空格<br> *        -如果为R或者r则去掉右边的空格<br> * @return */function trim(str,type){ if(type=="" || type==null){ return str.replace(/(^\s*)|(\s*$)/g, "");    }else if(type.toLocaleLowerCase()=="r"){ return  str.replace(/(\s*$)/g,"");   }else if(type.toLocaleLowerCase()=="l"){ return  str.replace(/(^\s*)/g,"");  } }/**** *@author Ickes * 根据id验证文本框中输入的是不是为空 * 如果为null则返回true **/function checkNull(_id){var v=_$(_id).value;v=trim(v);if(v==''){return true;}else{return false;}}/** *@author Ickes * 返回系统当前日期 * @return *      返回格式:yyyy-MM-dd*/function getDate(){var d;var s='';    d = new Date();                               s +=  d.getFullYear() + "-";       //月    var moth=d.getMonth() + 1;    if(moth<10){        s += "0"+moth+ "-";        }else{      s += moth + "-";    }    //日    var date=d.getDate();    if(date<10){      s += "0"+date;      } else{        s += date;      }                          return(s);                               }/** * @author Ickes * 返回系统当前日期时间 * @return *      返回格式:yyyy-MM-dd hh:mm:ss*/function getDateTime(){var d;var s='';    d = new Date();                               s +=  d.getFullYear() + "-";       //月    var moth=d.getMonth() + 1;    if(moth < 10){        s += "0" +moth+ "-";        }else{      s += moth + "-";    }    //日    var date=d.getDate();    if(date < 10){      s += "0" + date + " ";      } else{        s += date+" ";      }      //小时    var hours=d.getHours();    if(hours < 10){    s += "0" +hours+ ":";    }else{    s +=hours+":";    }    //分钟    var minutes = d.getMinutes();    if(minutes < 10){    s += "0" +minutes+ ":";    }else{    s += minutes+ ":";    }    //秒钟    var seconds = d.getSeconds();    if(seconds < 10){    s += "0"+seconds;    }else{    s += seconds;    }    return(s);                               }/**** *@author Ickes *格式化日期<br> *@param str *       要格式的字符串<br> *@例子: *      2012-12-12  <br>转换成<br> 2012/12/12  **/function formatDate(str){return str.split("-").join("/");}/** *@author Ickes *比较两个日期的大小,日期的格式为2012-12-12或2012/12/12 <br> *@param _startId *         开始日期文本框的Id *@param _endId *         结束日期文本框的Id *@retur *       如果结束日期大于开始日期则返回true<br> **/function compareDateId(_statId,_endId){var startDate = formatDate(_$(_statId).value);var endDate   = formatDate(_$(_endId).value);var time1=Date.parse(startDate);var time2=Date.parse(endDate);    if(time1 > time2){return false;}return true;}/** *@author Ickes *比较两个日期的大小,日期的格式为2012-12-12或2012/12/12 <br> *@param start *       开始日期 *@param end *       结束日期 *@retur *       如果结束日期大于开始日期则返回true<br> **/function compareDateStr(start,end){var startDate = formatDate(start);var endDate   = formatDate(end);var time1=Date.parse(startDate);var time2=Date.parse(endDate);    if(time1 > time2){return false;}return true;}/**** *@author Ickes * 提交表单 * @param _id  *         要提交表单的id * @param url  *         路径 * @param method *         补填就是默认:post */function _submit(_id,url,method){if(method=="" || method==null){method="post";}_$(_id).method=method;_$(_id).action=url;_$(_id).submit();} /**  * @author Ickes  * 传入一个字符串__返回他的所占用的字节<br>  * @return  *       所占用的字节  */ function byteLen(s) { var l = 0; var a = s.split(""); for (var i=0;i<a.length;i++) { if (a[i].charCodeAt(0)<299) { l++; } else { l+=2; } } return l; }/**** * @author Ickes * 根据id验证文本框中输入的是不是数值 * @param *       文本框的Id * @return *        是数值就返回true,空返回false **/function isNumId(_id){var value=_$(_id).value;//去掉字符串两端的空格value=trim(value);if(value==''){        return false;    }    var flg=isNaN(value);return !flg;}/** * @author Ickes * 根据id验证文本框中输入的是不是数值<br> * @param _value *        要判断的值 * @return *        是数值就返回true,空返回false **/function isNum(_value){//去掉字符串两端的空格value=trim(_value);if(value==''){        return false;    }    var flg=isNaN(value);return !flg;}/**** * @author Ickes *根据id验证是否是一个合格的email<br> *@param *     文本框id属性   *@return *   为空时返回false<br> *   如果是一个合法的email则返回true **/function isEmail(_id){ var srt=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; var email=_$(_id).value; if(email==null || email==""){ return false; }     if(srt.test(email)) {         //合法时         return true;     }     else{         //不合法时       return false;     }}/** *@author Ickes *是否是电话号码 *@param _id: *        文本框中的id属性 *@return *        为空时返回false<br> *        如果是一个合法的电话则返回true */function isTelId(_id){var str=_$(_id).value;    if(str==null || trim(str)==""){    return false;    }    var str= trim(str);var myphone = /^[\-0-9+()\/]{1,32}$/;    if(myphone.test(str)){    return true;    }     return false;}/** *@author Ickes *字符串是否为合法的电话号码 *@param str: *        要验证的字符串 *@return *        如果是一个合法的电话则返回true */function isTel(str){    if(str==null||trim(str)==""){    return false;    }    var str= trim(str);var myphone = /^[\-0-9+()\/]{1,32}$/;    if(myphone.test(str)){    return true;    }     return false;}/** * @author Ickes * 身份证号码验证-支持新的带x身份证 * @param num: *        要验证的字符串 * @return    *        如果是一个合法的身份证则返回true */function isCardNo(num){num=trim(num);    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);    var error;    var varArray = new Array();    var intValue;    var lngProduct = 0;    var intCheckDigit;    var intStrLen = num.length;    var idNumber = num;           var checkDate = function(date) {      return true;    }         // initialize    if ((intStrLen != 15) && (intStrLen != 18)) {        //error = "输入身份证号码长度不对!";        //alert(error);        //frmAddUser.txtIDCard.focus();        return false;    }        // check and set value    for(i=0;i<intStrLen;i++) {        varArray[i] = idNumber.charAt(i);        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {            //error = "错误的身份证号码!.";            //alert(error);            //frmAddUser.txtIDCard.focus();            return false;        } else if (i < 17) {            varArray[i] = varArray[i]*factorArr[i];        }    }    if (intStrLen == 18) {        //check date        var date8 = idNumber.substring(6,14);        if (checkDate(date8) == false) {            //error = "身份证中日期信息不正确!.";            //alert(error);            return false;        }                // calculate the sum of the products        for(i=0;i<17;i++) {            lngProduct = lngProduct + varArray[i];        }                // calculate the check digit        intCheckDigit = 12 - lngProduct % 11;        switch (intCheckDigit) {            case 10:                intCheckDigit = 'X';                break;            case 11:                intCheckDigit = 0;                break;            case 12:                intCheckDigit = 1;                break;        }                // check last digit        if (varArray[17].toUpperCase() != intCheckDigit) {            //error = "身份证效验位错误!正确为: " + intCheckDigit + ".";            //alert(error);            return false;        }    }     else{        //length is 15        //check date        var date6 = idNumber.substring(6,12);        if (checkDate(date6) == false) {            //alert("身份证日期信息有误!.");            return false;        }    }    //alert ("Correct.");    return true;}/** * @author Ickes * 身份证号码验证-支持新的带x身份证 * @param _id: *         文本框的Id属性 * @return    *         如果是一个合法的身份证则返回true */function isCardNoId(_id){var num=trim(_$(_id).value);if(num==null || num==""){return false;}    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);    var error;    var varArray = new Array();    var intValue;    var lngProduct = 0;    var intCheckDigit;    var intStrLen = num.length;    var idNumber = num;           var checkDate = function(date) {      return true;    }         //身份证号码长度    if ((intStrLen != 15) && (intStrLen != 18)) {        return false;    }        // check and set value    for(i=0;i<intStrLen;i++) {        varArray[i] = idNumber.charAt(i);        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {            //error = "错误的身份证号码!.";            return false;        } else if (i < 17) {            varArray[i] = varArray[i]*factorArr[i];        }    }    if (intStrLen == 18) {        //check date        var date8 = idNumber.substring(6,14);        if (checkDate(date8) == false) {            //error = "身份证中日期信息不正确!.";            //alert(error);            return false;        }                // calculate the sum of the products        for(i=0;i<17;i++) {            lngProduct = lngProduct + varArray[i];        }                // calculate the check digit        intCheckDigit = 12 - lngProduct % 11;        switch (intCheckDigit) {            case 10:                intCheckDigit = 'X';                break;            case 11:                intCheckDigit = 0;                break;            case 12:                intCheckDigit = 1;                break;        }                // check last digit        if (varArray[17].toUpperCase() != intCheckDigit) {            //error = "身份证效验位错误!正确为: " + intCheckDigit + ".";            //alert(error);            return false;        }    }     else{        //length is 15        //check date        var date6 = idNumber.substring(6,12);        if (checkDate(date6) == false) {            //alert("身份证日期信息有误!.");            return false;        }    }    return true;}/** * @author Ickes * 如果身份证是合法的身份证,则返回日期部分的时间对象 * @param card *        身份证号码 * @return *        返回出生日期 */function getCardDate(card){var date="";var year="";    var moth="";var day="";if(card.length==18){ date=card.substring(6,14); year=date.substring(0,4); moth=date.substring(4,6); day =date.substring(6,8); date=year+"/"+moth+"/"+day;}else{ date=card.substring(6,12); year="19"+date.substring(0,2); moth=date.substring(2,4); day =date.substring(4,6); date=year+"/"+moth+"/"+day;}return new Date(date);}/**** * @author Ickes * 根据id在指定的文本后面显示错误信息 **/function showError(_id,error){_$(_id).innerHTML='';_$(_id).innerHTML="<font color='red'>"+error+"<font>";}

 

原创粉丝点击