`
eksliang
  • 浏览: 593293 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

     转载请出自出处: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>";
}

 

分享到:
评论

相关推荐

    常用的表单提交验证脚本

    常用的表单提交javascript验证脚本,有详细的使用说明

    JavaScript客户端脚本语言

    JavaScript语言基础 JavaScript程序流程控制语句 JavaScript函数和事件处理程序 HTML文档对象模型 JavaScript内置的常用对象 用JavaScript脚本对HTML数据的的验证

    js验证大全 javascript

    js 常用验证 验证脚本集合 和常用函数的封装

    常用的一些javascript脚本样例

    31 正则表达式 验证电话,URL,邮箱地址 32 导航选项卡 导航选项卡 33 动态更换样式表 动态更换样式表 34 天气预报代码ANDiframe 天气预报代码ANDiframe 35 添加收藏和设为主页 添加收藏和设为主页 希望大家支持~...

    javascript表单验证

    javascript常用表单验证的脚本代码,可直接粘帖使用,代码简单实用并赋有详细解释。

    javascript 常用代码大全

    一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的id的验证) 1.3 负整数的验证 ...14,各种相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(xmlhttp或iframe,frame)

    最常用的javascript验证

    此外,JScript 脚本只能在某个解释器或“宿主”上运行,如 Active Server Pages(ASP)、Internet 浏览器或者 Windows 脚本宿主。 JScript 是一种宽松类型的语言。宽松类型意味着您不必显式定义变量的数据类型。...

    javascript完全学习手册1 源码

    第4章 JavaScript常用对象 73 4.1 Document对象 73 4.1.1 Document对象概述 73 4.1.2 使用Document对象 75 4.2 Form对象及其元素 79 4.2.1 Form对象概述 79 4.2.2 表单元素 80 4.2.3 表单元素属性和事件 82 4.2.4 ...

    常用JS脚本页面判断

    一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形如 (2003-...

    javascript代码常用大全

    一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 ...相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame)

    js表单验证大全,js提交表单

    一些表单中常用的javascript脚本验证。

    从零开始学JavaScript 源代码

    第一篇 JavaScript入门篇 第1章 初步了解JavaScript 1.1 JavaScript是什么 1.2 JavaScript能做什么 1.2.1 表单数据合法性验证 1.2.2 页面特效 1.2.3 交互式菜单 1.2.4 动态页面 ...第15章 JavaScript常用特效收集

    JavaScript常用函数

    JavaScript 是属于网络的...JavaScript 被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。 JavaScript 是因特网上最流行的脚本语言。 JavaScript 很容易使用!你一定会喜欢它的!

    常用各类验证 正则表达式

    包括电话号码验证,邮政编码验证 ,电子邮件验证,身份证验证,常用数字验证,非法字符验证 ,日期验证。。。 等几乎包括了我们项目当中所有常用验证例子。

    javascript常用代码大全.html

    包括: 一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) ...14,各种相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame)

    客户端统一验证JavaScript函数库及示例源码

    参数myform指代验证的表单,可以比作验证树DOM的根,之后的JavaScript会遍历所有元素(elements),逐个检验,若没有设置验证则直接跳过,若有一个验证不通过,都不会将表单提交,并将光标定位到该处(focus()),若有...

    ASP.NET程序开发范例宝典 第3章 CSS样式与JavaScript脚本应用

    全书分为20章,内容包括搭建ASP.NET开发环境、HTML开发与实践、CSS样式与JavaScript脚本应用、常用Web服务器控件、验证控件、高级Web服务器控件、ADO.NET技术、数据绑定技术、SQL查询相关技术、视图、存储过程及...

    Javascript判断常用Demo

    打开一个新窗体传值与回传值 脚本验证正则表达式 判断gridview是否有选中行 删除前给出提示 屏蔽键盘 checkbox的全选/取消等

Global site tag (gtag.js) - Google Analytics