总结所有的javascript验证方法大全


//===========================================================================
//通用JavaScript说明:
//本文件存储通用的一些页面输入框内容的判断方法
//方法名:大部分以check开始
//参数名:elem表示一个输入框element
//        field表示输入框的中文标题名,一般是显示在提示窗口中使用
//        frm表示页面中的表单
//注意:希望以后添加到此文件中的方法也要统一遵守上面的规则
//===========================================================================
//1、检查输入框中是否为空
//2、检查表单内所有字段是否为空
//3、判断输入框中只能输入正整数(不包括零)
//4、判断输入框中只能输入非负整数(包括零)
//5、判断输入框中只能输入非负数数值型数据(包括小数)
//6、判断输入框中的数值是否在指定范围内(如:0-100),不包括上下界值
//6-1、判断输入框中的数值是否在指定范围内(如:0-100),包括上下界值0和100
//7、判断输入框中只能输入字母
//8、判定指定的字段长度是否超过了指定的最大长度,主要是校验汉字的长度
//9、验证日期的前后关系
//10、判断学年的格式(格式为:2005-2006)
//11、去除前后的空格
//12、checkbox全选
//13、是否有checkbox被选择,用于有选择的删除
//14、使入域的值在提交之产重定向到其它输入域
//15、打开新的窗口
//16、校验日期格式(YYYY-MM-DD格式)
//17、校验身份证号是否有效
//18、判断是否为空
//19、判断输入框中只能输入字母数字
//20、打开模态窗口
//21、手机号码验证
//22、计算输入字符数
//23、Y/N数据验证,对于小写的y/n则自动转换为大写
//24、0/1数据验证
//25、http://IP:PORT格式地址验证,可以未空
//26、MO/TO数据验证
//27、固定电话号码验证
//28、是否大于100000(十万)
//29、校验Email地址是否有效
//30、根据身份证获取生日
//31、根据身份证获取性别
//32、判断输入框中的数值是否在指定范围内(如:0-100),包含最大值,最小值
//33、判断输入框中只能输入字母
//34、1/2数据验证
//35、用户密码安全等级判断
//36、1/2/3数据验证
//37、邮政编码的验证
//38、web地址格式验证(http://IP格式 或 http://域名格式)
//39、1或1,2或1,2,3,4,5,6数据格式验证(即:用“,”号分隔的1——6数字验证)
//40、验证输入域中不能有<>~!@#$%&|非法字符
//41、表单中所有输入框的内容去掉前后空格
//===========================================================================

/**
*  1、检查输入框中是否为空
*  elem 输入框
*  field 输入框的中文名称
*/
function checkElement(elem,field){
	if(trim(elem.value)==''){
		addFieldErrorWithObject(elem,field+"不能为空,请输入!");
		return false;
	}
	return true;
}


/**
*  2、检查表单内所有字段是否为空
*/
function checkAllForm(frm){
 var len=frm.elements.length;
  for(var i=0;i<len;i++)
   {
     if(frm.elements[i].alt=='key'){
	     if(trim(frm.elements[i].value)==''){ 
	    	 if(frm.elements[i].type=='text'){
			 alert("请输入"+frm.elements[i].id);
			 	frm.elements[i].select();
			}else{
			alert("请选择"+frm.elements[i].id);
				frm.elements[i].focus();
			   }
			 return false;
		    }
	 }
  }
  return true;
}


/**
*  3、判断输入框中只能输入正整数(不包括零)
*/
function checkPlusInt(elem,field){
	if(!checkElement(elem,field)) return false;
	val=elem.value;
	//var pattern=/[^1-9]/;
	var pattern=/[^0-9]/;
	if(pattern.test(val) || val.slice(0,1)=="0"){
		addFieldErrorWithObject(elem,field+"只能输入非零的整数!");
		elem.value = '';
		elem.focus();
		return false;
	}
	return true;
}

/**
*  4、判断输入框中只能输入非负整数(包括零)
*/
function checkInteger(elem,field){
	if(!checkElement(elem,field)) return false;

	val=elem.value;
	var pattern=/[^0-9]/;
	if(pattern.test(val)){
		addFieldErrorWithObject(elem,field+"只能输入非负整数!");
		elem.focus();
		return false;
	}
	return true;
}


/**
*  5、判断输入框中只能输入非负数数值型数据(包括小数)
*/
function checkNum(elem,field){
	if(!checkElement(elem,field)) return false;
	
	val=elem.value;
	var pattern=/[^0-9.]/;
	if(pattern.test(val)){
		addFieldErrorWithObject(elem,field+"只能输入非负数值型数据!");
		elem.value = '';
		elem.focus();
		return false;
	}
	return true;
}

/**
*  6、判断输入框中的数值是否在指定范围内(如:0-100),不包括上下界值
*  min:最小值
*  max:最大值
*/
function checkNumRange(elem,field,min,max){
	val = parseInt(elem.value);
	if(val<=min || val>=max){
		addFieldError(elem.id,field+"只能是"+min+"~"+max+"范围内的数值!");
		elem.focus();
		return false;
	}
	return true;
}

/**
*  6-1、判断输入框中的数值是否在指定范围内(如:0-100),包括上下界值
*  min:最小值
*  max:最大值
*/
function checkNumRange2(elem, field, min, max){
	val = parseInt(elem.value);
	if(val<min || val>max){
		addFieldError(elem.id, field+"只能是"+min+"~"+max+"范围内的数值!");
		elem.focus();
		return false;
	}
	return true;
}

/**
*  7、判断输入框中只能输入字母
*/
function checkCharacters(elem,field){
	val=elem.value;
	var pattern=/\W/g;
	if(pattern.test(val)){
		alert(field+"只能为A-Z a-z 0-9等字符!");
		elem.focus();
		return false;
	}
	pattern=/_/g;
	if(pattern.test(val)){
		alert(field+"只能为A-Z a-z 0-9等字符!");
		elem.focus();
		return false;
	}

}
function checkCharacters2(elem,field){
 	var flag=false;
    var str=/[a-z]|[A-Z]/;
    var str1=trim(elem.value).length;
 	for(var i=0;i<str1;i++){
    	if(!str.test(trim(elem.value).charAt(i))){
	    	flag=true;
			break;
		}
	}
	if(flag==true){
	    addFieldErrorWithObject(elem,field+"只能为字母!");
	   elem.focus();
	   return false;
     }else{
     	return true;
     }  
 }

/**
*  8、判定指定的字段长度是否超过了指定的最大长度,主要是校验汉字的长度
*  element 指定字段
*  maxlen  允许最大长度
* field   标题(字段名)
*/
function checkOverLen(elem,maxlen,field){
	var len;
	var i;
	len = 0;
	var val = trim(elem.value);
	var maxlength = parseInt(maxlen);
	var length = val.length;
	for (i=0;i<length;i++){
		if (val.charCodeAt(i)>255) 
			len+=2;
		else 
			len++;
	}
	if(len>maxlength){
		addFieldErrorWithObject(elem,field+"长度超过范围,允许最大长度为"+maxlength+"个字符");
		elem.focus();
		return false;
	}
	return true;
}


/**
*  9、验证日期的前后关系
*  elem1 前面的日期
*  elem2 后面的日期
*/
function checkAfterDate(elem1,elem2){
	if(elem1.value!="" && elem2.value!=""){
		 var date1 ;
		 var date2 ;
		 try{
			date1 = elem1.value.split('-');
			date2 =elem2.value.split('-');
		 }catch(e){
			date1 = elem1.split('-');
			date2 = elem2.split('-');
		 }
	
		 for(var i=0;i<Math.min(date1.length,date2.length);i++){
			if(date1[i].length==1)
				date1[i]='0'+date1[i];
			if(date2[i].length==1)
				date2[i]='0'+date2[i];
		 }
		 
		 for(var i=0;i<date1.length;i++){
			if(date1[i]>date2[i]){
				alert("时间前后不合逻辑,请更正!");
				if(elem1.type!='hidden')
					elem1.focus();
				else {
					try{
						elem2.focus();
					}catch(e){}
				}
				return false;
			}
			if(date1[i]<date2[i]){
				i=date1.length;
			}
		 }
	}
	
	return true;
}


/**
*  9-1、验证日期的前后关系(传入提示信息)
*  elem1 前面的日期
*  elem2 后面的日期
*  msg  验证通不过时的提示信息
*/
function checkAfterDateWithMsg(elem1,elem2,msg){
	if(elem1.value!="" && elem2.value!=""){
		 var date1 ;
		 var date2 ;
		 try{
			date1 = elem1.value.split('-');
			date2 =elem2.value.split('-');
		 }catch(e){
			date1 = elem1.split('-');
			date2 = elem2.split('-');
		 }
	
		 for(var i=0;i<Math.min(date1.length,date2.length);i++){
			if(date1[i].length==1)
				date1[i]='0'+date1[i];
			if(date2[i].length==1)
				date2[i]='0'+date2[i];
		 }
		 
		 for(var i=0;i<date1.length;i++){
			if(date1[i]>date2[i]){
				alert(msg);
				if(elem1.type!='hidden')
					elem1.focus();
				else {
					try{
						elem2.focus();
					}catch(e){}
				}
				return false;
			}
			if(date1[i]<date2[i]){
				i=date1.length;
			}
		 }
	}
	
	return true;
}


/**
*  9-2、比较日期的大小
*  elem1 前面的日期(string)
*  elem2 后面的日期(string)
*  elem1>elem2 return 1;elem1==elem2 return 0;elem1<elem2 return -1
*/
function compareDate(elem1,elem2){
	if(elem1.value!="" && elem2.value!=""){
		 var date1 ;
		 var date2 ;
		 try{
			date1 = elem1.value.split('-');
			date2 =elem2.value.split('-');
		 }catch(e){
			date1 = elem1.split('-');
			date2 = elem2.split('-');
		 }
		 if(eval(date1[0])>eval(date2[0])){
		 	return 1;
		 }else if(eval(date1[0])==eval(date2[0])){
		 	if(eval(date1[1])>eval(date2[1])){
		 		return 1;
		 	}else if(eval(date1[1])==eval(date2[1])){
		 	    if(eval(date1[2])>eval(date2[2])){
			 		return 1;
			 	}else if(eval(date1[2])==eval(date2[2])){
			 		return 0;
			 	}else{
			 	    return -1;
			 	}	
		 	}else{
		 		return -1;
		 	}
		 }else{
		 	return -1;
		 }
	}
}



/**
*  10、判断学年的格式(格式为:2005-2006)
*/
function checkTermyear(elem){
	var termyear = trim(elem.value);
	if(termyear.length!=9){
		alert("学年必须为9位数据");
		elem.select();
		return false;
	}
	if(termyear.charAt(4)!='-'){
		alert("格式错误,正确格式示例:2003-2004");
		elem.select();
		 return false;
	}
	if(parseInt(termyear.substring(0,4))!=(parseInt(termyear.substring(5,9))-1)){
		alert("学年信息错误!");
		elem.select();
		return false;
 	}
	return true;
}


/**
 *  11、去除前后的空格
 */
function trim(str) {
	if(str !='' && str != null){
		while(str.charAt(0)==' ') str=str.substring(1,str.length);   //trim leading spaces
		while(str.charAt(str.length-1)==' ') str=str.substring(0,str.length-1);  //trim trailing spaces
	}
	return str;
}


/**
*  12、checkbox全选
*  frm 包含删除checkbox的表单
*  elemCheckboxAll 全选的checkbox
*  elemCheckbox 每行的checkbox的name值,字符串
*/
function selectAllCheckbox(frm,elemCheckboxAll,elemCheckbox){
	var length = frm.elements.length;
	if (elemCheckboxAll.checked==true){
		for(i=0;i<length;i++){
			if((frm.elements[i].name ==elemCheckbox) && (frm.elements[i].disabled==false)){
		   		frm.elements[i].checked=true;
			}
		}
	}else{
		for(i=0;i<length;i++){
			if((frm.elements[i].name ==elemCheckbox) && (frm.elements[i].disabled==false)){
		   		frm.elements[i].checked=false;
		   	}
		}
	} 
}

/**
*  13、是否有checkbox被选择,用于有选择的删除
*  各参数的意义参看上面的函数selectAllCheckbox
*/
function checkSelectCheckbox(frm,elemCheckbox){
	var flag = false;
	var length = frm.elements.length;
	for(i=0;i<length;i++){
		if(frm.elements[i].name == elemCheckbox && frm.elements[i].checked){
			flag = true;
			break;
		}
	}
	
	if(!flag){
		alert("没有行被选择,请先选择!");
	}
	return flag;
}

/**
 * 14、使入域的值在提交之产重定向到其它输入域
 * 一般用于在表单提交之前,把列表控件中checkbox选中的值,传递到隐藏域字段(也可以是非隐藏的input域)
 * 通过隐藏域字段,把选中的值提交到action。提交到action的值形式:id,id,
 * @param formObj: 包含列表checkbox的表单对象
 * @param checkboxName: 列表checkbox的name值
 * @param hiddenObj: 隐藏域字段对象(也可以是非隐藏的input域字段对象)
 * 具体调用该方法的示例:checkboxValueToHidden (document.form,'userid',document.form1.selectedUserids)
 */
function checkboxValueToHidden(formObj,checkboxName,hiddenObj){
	hiddenObj.value = "";
	var length = formObj.elements.length;
	for(var i=0;i<length;i++){
		if((formObj.elements[i].type == "checkbox") && (formObj.elements[i].name == checkboxName) 
			&& (formObj.elements[i].checked)){
			hiddenObj.value = hiddenObj.value + formObj.elements[i].value + ",";
		}
	}
}

/**
 * 15、打开新的窗口
 * url:窗口路径
 * winName: 窗口的名字
 * width:窗口的宽度
 * height: 窗口高度
 */
function openwindow( url, winName, width, height, resizable) 
{
xposition=0; yposition=0;
if ((parseInt(navigator.appVersion) >= 4 ))
{
xposition = (screen.width - width) / 2;
yposition = (screen.height - height) / 2;
}
theproperty= "width=" + width + "," 
+ "height=" + height + "," 
+ "location=0," 
+ "menubar=0,"
if (resizable){
	theproperty +="resizable=" + resizable + ",";
}
else{
	theproperty +="resizable=1";
}
theproperty = theproperty
+ "scrollbars=0,"
+ "status=0," 
+ "titlebar=0,"
+ "toolbar=0,"
+ "hotkeys=0,"
+ "screenx=" + xposition + "," //Netscape
+ "screeny=" + yposition + "," //Netscape
+ "left=" + xposition + "," //IE
+ "top=" + yposition; //IE 
newwin=window.open( url,winName,theproperty );

if(newwin.closed){
   window.location.reload();
}
}


 /**
 * 16、校验日期格式(YYYY-MM-DD格式)
 *	elem:日期输入框
 *  field:提示名称
 */
function checkDate(elem,field){
	if(isBlank(elem.value))
		return true;
	var DateValue = "";
    var seperator = "-";
    var day;
    var month;
    var year;
    var leap = 0;
    var err = 0;
    err = 0;
    DateValue = elem.value;

    var re = /[^0-9\-]+/gi;

    DateValue =  DateValue.replace(re, "");   //去除所有数字和'-'以外的字符

    var parts = DateValue.split('-');

    VALIDATION: {
        var len = parts.length;
        if(len != 3) {
            err = 19;
            break VALIDATION;
        }

      
        /*if(parts[0].length == 2) {
            parts[0] = '20' + parts[0];
        }*/
		if(parts[0].length != 4) {
            err = 100;
            break VALIDATION;
        }        
        year = parseInt(jsTrimLeadingZero(jsTrim(parts[0])), 10);

        if ((isNaN(year))|| (year == 0)) {
            err = 20;
            break VALIDATION;
        }
        /* Validation of month*/
        month = parseInt(jsTrimLeadingZero(jsTrim(parts[1])), 10);
        if ((isNaN(month))|| (month < 1) || (month > 12)) {
            err = 21;
            break VALIDATION;
        }
        /* Validation of day*/
        day = parseInt(jsTrimLeadingZero(jsTrim(parts[2])), 10);
        if ((isNaN(day))|| (day < 1)) {
            err = 22;
            break VALIDATION;

        }

        /* Validation leap-year / february / day */
        if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
            leap = 1;
        }
        if ((month == 2) && (leap == 1) && (day > 29)) {
            err = 23;
            break VALIDATION;
        }
        if ((month == 2) && (leap != 1) && (day > 28)) {
            err = 24;
            break VALIDATION;
        }
        /* Validation of other months */
        if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
            err = 25;
            break VALIDATION;
        }
        if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
            err = 26;
            break VALIDATION;
        }
        /* if 00 ist entered, no error, deleting the entry */
        if ((day == 0) && (month == 0) && (year == 00)) {
            err = 0; day = ""; month = ""; year = ""; seperator = "";
        }
    }
    /* if no error, write the completed date to Input-elem (e.g. 13.12.2001) */
    if (err == 0) {    	
    	if (compareDate(year + seperator + month + seperator + day, "1900" + seperator + "1" + seperator + "1") < 0){
//    		alert(field + '的值不能小于1900-1-1');			
			addFieldErrorWithObject(elem, field + "的值必须在1900-1-1到2038-12-31之间");			
    		elem.select();
			return false;
    	}
    	if (compareDate("2038" + seperator + "12" + seperator + "31", year + seperator + month + seperator + day) < 0){
//    		alert(field + '的值不能大于2038-1-1');
			addFieldErrorWithObject(elem, field + "的值必须在1900-1-1到2038-12-31之间");
    		elem.select();
			return false;
    	}
        elem.value = year + seperator + month + seperator + day;
	
    }  else {
    	addFieldErrorWithObject(elem, '要求'+ field + '的格式为yyyy-mm-dd,并请注意月份与日期的有效范围');   
//        alert(field + '为日期型\n日期的格式为yyyy-mm-dd\n并请注意月份与日期的有效范围');    
        elem.select();
		return false;
    }
    return true;
}

 /**
 * 16、校验日期格式(YYYY-MM-DD格式)
 *	elem:日期输入框
 *  field:提示名称
 */
function checkDate2(value,field){
	if(isBlank(value))
		return "";
	var DateValue = "";
    var seperator = "-";
    var day;
    var month;
    var year;
    var leap = 0;
    var err = 0;
    err = 0;
    DateValue = value;

    var re = /[^0-9\-]+/gi;

    DateValue =  DateValue.replace(re, "");   //去除所有数字和'-'以外的字符

    var parts = DateValue.split('-');

    VALIDATION: {
        var len = parts.length;
        if(len != 3) {
            err = 19;
            break VALIDATION;
        }

      
        /*if(parts[0].length == 2) {
            parts[0] = '20' + parts[0];
        }*/
		if(parts[0].length != 4) {
            err = 100;
            break VALIDATION;
        }        
        year = parseInt(jsTrimLeadingZero(jsTrim(parts[0])), 10);

        if ((isNaN(year))|| (year == 0)) {
            err = 20;
            break VALIDATION;
        }
        /* Validation of month*/
        month = parseInt(jsTrimLeadingZero(jsTrim(parts[1])), 10);
        if ((isNaN(month))|| (month < 1) || (month > 12)) {
            err = 21;
            break VALIDATION;
        }
        /* Validation of day*/
        day = parseInt(jsTrimLeadingZero(jsTrim(parts[2])), 10);
        if ((isNaN(day))|| (day < 1)) {
            err = 22;
            break VALIDATION;

        }

        /* Validation leap-year / february / day */
        if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
            leap = 1;
        }
        if ((month == 2) && (leap == 1) && (day > 29)) {
            err = 23;
            break VALIDATION;
        }
        if ((month == 2) && (leap != 1) && (day > 28)) {
            err = 24;
            break VALIDATION;
        }
        /* Validation of other months */
        if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
            err = 25;
            break VALIDATION;
        }
        if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
            err = 26;
            break VALIDATION;
        }
        /* if 00 ist entered, no error, deleting the entry */
        if ((day == 0) && (month == 0) && (year == 00)) {
            err = 0; day = ""; month = ""; year = ""; seperator = "";
        }
    }
    /* if no error, write the completed date to Input-elem (e.g. 13.12.2001) */
    if (err == 0) {    	
    	if (compareDate(year + seperator + month + seperator + day, "1900" + seperator + "1" + seperator + "1") < 0){
			return field + "的值必须在1900-1-1到2038-12-31之间";
    	}
    	if (compareDate("2038" + seperator + "1" + seperator + "1", year + seperator + month + seperator + day) < 0){
			return field + "的值必须在1900-1-1到2038-12-31之间";
    	}
        value = year + seperator + month + seperator + day;
	
    }  else {
		return '要求'+ field + '的格式为yyyy-mm-dd,并请注意月份与日期的有效范围';
    }
    return "";
}

function jsTrim(s) {
    return s.replace(/(^\s+)|(\s+$)/g, "");
}

function jsTrimLeadingZero(s) {
    return s.replace(/(^0+)/g, "");
}

 /**
 * 17、校验身份证号是否有效
 *	elem:日期输入框
 *  field:提示名称
 */
function checkIdentityCard(elem){	
    if(isBlank(elem.value)) return true;
    
    var reOld = /^[0-9]{15}$/gi;
    var reNew = /^[0-9]{17}[0-9x]{1}$/gi;
    
    var err = 0;

    if(reOld.test(elem.value)) {
        err = 0;
    }    
    else if(reNew.test(elem.value)){
        err = 0;
    }
    else {
    	err = 1;
        addFieldError(elem.name,'请输入正确的身份证号!');
        return false;
    }
    
    var year;
    var month;
    var day;
    var date;
    if (err == 0){
    	if (elem.value.length == 15){
    		year = "19" + elem.value.substring(6, 8);
    		month = elem.value.substring(8, 10);
    		day = elem.value.substring(10, 12)
    		date = year + "-" + month + "-" + day;
    	}
    	else if (elem.value.length == 18){
    		year = elem.value.substring(6, 10);
    		month = elem.value.substring(10, 12);
    		day = elem.value.substring(12, 14)
    		date = year + "-" + month + "-" + day;
    	}
    	var checkdate = checkDate2(date, "身份证号中出生日期");
    	if (checkdate == ""){
    		return true;
    	}
    	else{
    		addFieldError(elem.name, checkdate);
    		return false;
    	}
    }
}

 /**
 * 18、判断是否为空
 *	s:值
 */
function isBlank(s) {
    var re = /^\s*$/g;
    return re.test(s);
}


/**
* 19、判断输入框中只能输入字母数字
*  
*/
 function verifyLetterAndNum(elem,field){
 	var flag=false;
    var str=/[a-z]|[A-Z]|[0-9]/;
    var str1=trim(elem.value).length;
 	for(var i=0;i<str1;i++){
    	if(!str.test(trim(elem.value).charAt(i))){
	    	flag=true;
			break;
		}
	}
	if(flag==true){
	   alert(field+"只能为数字和字母");
	   elem.focus();
	   return false;
       }  
 }
function verifyLetterAndNum2(elem,field){
 	var flag=false;
    var str=/[a-z]|[A-Z]|[0-9]/;
    var str1=trim(elem.value).length;
 	for(var i=0;i<str1;i++){
    	if(!str.test(trim(elem.value).charAt(i))){
	    	flag=true;
			break;
		}
	}
	if(flag==true){
	    addFieldErrorWithObject(elem,field+"只能为数字和字母!");
	   elem.focus();
	   return false;
    }else {
    	return true;
    }  
 }
 /**
 * 20、打开模态窗口 
 *	url:地址
 *  arguments:参数
 *	twidth:宽度
 *  theight:高度
 */
function openModalDialog(url,arguments,twidth,theight){
    var sRet = window.showModalDialog(url,arguments,"dialogWidth=" + twidth + "px;dialogHeight=" + theight + "px;status=no;help=no;resizable=no;");
    if(sRet != null){
	    if("refresh" == sRet.kind){
	    	window.location.reload();
	    }
	 }
	 return sRet;
}

/*
 *21、手机号码验证
 */
function checkMobilePhone(elem){
	val=elem.value;
	if(trim(val)!=''){		
		var pattern=/^[0-9]{1,20}$/;
		//alert(val);
		if(!pattern.test(val)){
			addFieldError(elem.name,"请输入正确的号码!并且不能超过20个数字");
			return false;
		}
	}
	return true;
}

/*
 *22、计算输入字符数
 */
function computeInputLength(elem){
	var len;
	len = 0;
	var val = trim(elem.value);
	var length = val.length;
	for (var i=0;i<length;i++){
		if (val.charCodeAt(i)>255) 
			len+=2;
		else 
			len++;
	}
	alert("您已经输入了"+len+"个字符!");
}

/*
 *23、Y/N数据验证
 */
function checkYN(elem,field){	
	var val=trim(elem.value);
	var pattern=/^(Y|N|y|n)$/;
	if(!pattern.test(val)){
		addFieldError(elem.id,field+'只能输入Y或N');
		elem.focus();
		return false;
	}
	else{
		elem.value=val.toUpperCase();
	}
	return true;
}

/*
 *24、0/1数据验证
 */
function check01(elem,field){
	var val=trim(elem.value);
	var pattern=/^(0|1)$/;
	if(!pattern.test(val)){
		addFieldError(elem.id,field+'只能输入0或1');
		elem.focus();
		return false;
	}
	return true;	
}

/*
 *25、http://IP:PORT格式地址验证,可以为空
 */
function checkipport(elem,field){
	var val=trim(elem.value);
	if(val==''){
		return true;
	}
	var pattern=/^http:\/\/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{2,10}$/;
	if(!pattern.test(val)){
		addFieldError(elem.id,field+'请确认符合http://IP:PORT格式');
		elem.focus();
		return false;
	}
	return true;
}

/*
 *26、MO/TO数据验证
 */
function checkmoto(elem,field){
	var val=trim(elem.value);
	var pattern=/^(M|T)O$/;
	if(!pattern.test(val)){
		addFieldError(elem.id,field+'只能输入MO或TO');
		elem.focus();
		return false;
	}
	return true;
}

/*
 *27、固定电话号码验证
 */
function checkPhone(elem,field){
	val=elem.value;
	if(trim(val).length==0){
		return true;
	}
	if(val.indexOf('-')==-1){
		var pattern=/^[0-9]{1,}$/;
		if(!pattern.test(val)){
			addFieldError(elem.name,'请输入正确的'+field);
			return false;
		}
		return true;		
	}
	else{
		pattern=/^[0-9]{3,4}-[0-9]{6,8}$/;
		if(!pattern.test(val)){
			addFieldError(elem.name,'请输入正确的'+field);
			elem.focus();
			return false;
		}
		return true;		
	}		
}
/*
 *28、是否小于100000(十万)
 */
function checklt100thousand(elem,field){
	if(!checkPlusInt(elem,field))
		return false;
	val=elem.value;
	var thousand100=100000;
	if(val<thousand100){
		addFieldError(elem.id,field+'不能小于'+thousand100);
		elem.focus();
		return false;
	}
	return true;
}
 /**
 * 29、校验Email地址是否有效
 *	elem:Email地址输入框
 */
function checkEmail(elem){	
    if(isBlank(elem.value)) return true;
    var reEmail =/[\w-.]+@{1}[\w-]+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig;
    if(reEmail.test(elem.value)) {
        return true;
    }
    else {
        addFieldError(elem.name,'Email格式不对,请输入正确的Email地址!');
        elem.focus();
        return false;
    }
}

 /**
 * 30、根据身份证获取生日
 */
function checkoutBirthday(elem){
	var birth='';
	if(!checkIdentityCard(elem)){
		return;
	};
	val=trim(elem.value);
	if(val.length==0){
		return;
	}
	
	if(val.length==15){
		birth='19'+val.substring(6,8);
		birth=birth+'-'+val.substring(8,10);
		birth=birth+'-'+val.substring(10,12);
	}
	else if(val.length=18){
		birth=val.substring(6,10);
		birth=birth+'-'+val.substring(10,12);
		birth=birth+'-'+val.substring(12,14);
	}
	return birth;
}

 /**
 * 31、根据身份证获取性别
 */
function checkoutSex(elem){
	var sex='';
	if(!checkIdentityCard(elem)){
		return;
	};
	val=trim(elem.value);
	if(val.length==0){
		return;
	}
	
	var sexindex=-1;
	if(val.length==15){
		sexindex=14;
	}
	else{
		sexindex=16;
	}
	sex=val.substring(sexindex,sexindex+1);
	if(sex%2==0){
		return 'F';
	}
	else{
		return 'M';
	}
}

/**
*  32、判断输入框中的数值是否在指定范围内(如:0-100),包含最大值,最小值
*  min:最小值
*  max:最大值
*/
function checkNumRange3(elem,field,min,max){
	if(!checkNum(elem,field)){
		return false;
	}

	val = elem.value;
	if(val<min || val>max){
		addFieldError(elem.id,field+"只能是"+min+"~"+max+"范围内的数值!");
		elem.focus();
		return false;
	}
	return true;
}

/**
*  33、判断输入框中只能输入数字
*/
function checkNumber(elem,field){
	val=elem.value;
	var pattern=/^[0-9]/;
	if(!pattern.test(val)){
		alert(field+"只能输入数字!");
		elem.value = '';
		elem.focus();
		return false;
	}
	return true;
}

/*
 *34、1/2数据验证
 */
function check12(elem,field){
	var val=trim(elem.value);
	var pattern=/^(1|2)$/;
	if(!pattern.test(val)){
		addFieldError(elem.id,field+'只能输入1或2');
		elem.focus();
		return false;
	}
	return true;	
}

/*
 *35、用户密码安全等级验证
 *			1:低,2:中,3:高
 */
function checkPasswordSecurity(pwd){
	if(pwd.length<4){
		return 1;
	}
	var p1= (pwd.search(/[a-zA-Z]/)!=-1) ? 1 : 0;
    var p2= (pwd.search(/[0-9]/)!=-1) ? 1 : 0;
    var p3= (pwd.search(/[^A-Za-z0-9_]/)!=-1) ? 1 : 0;
    return p1+p2+p3;    
}
/*
*该方法需与handlefielderror.ftl配合使用
*/
function checkUserPassword(elem){
	if(!elem){
		return false;
	}
	if(trim(elem.value)==''){
		return;
	}	
	var p=checkPasswordSecurity(elem.value);
	if(p==1){
		addFieldPromptWithObject(elem,"该密码安全等级为低,容易被破解","yellow");
	}
	else if(p==2){
		addFieldSuccessMsgWithObject(elem,"该密码安全等级为中,建议修改");
	}
	else if(p==3){
		addFieldSuccessMsgWithObject(elem,"该密码安全等级为高,可安全使用");
	}
		
}
/*
 *36、1/2/3数据验证
 */
function check123(elem,field){
	var val=trim(elem.value);
	var pattern=/^(1|2|3)$/;
	if(!pattern.test(val)){
		addFieldError(elem.id,field+'只能输入1或2或3');
		elem.focus();
		return false;
	}
	return true;	
}

 /**
 * 37、校验邮政编码是否有效
 *	elem:邮政编码输入框
 */
function checkPostalCode(elem){	
    if(isBlank(elem.value)) return true;
    var pattern = /^[0-9]{6}$/;
    if(pattern.test(elem.value)) {
        return true;
    }else {
   	 	addFieldError(elem.name,'邮政编码格式不对,请输入正确的邮政编码!');
        elem.focus();
        return false;
    }
}

/*
 *38、web地址格式验证(http://IP格式 或 http://域名格式)
 */
function checkwebaddress(elem,field){
	var val=trim(elem.value);
	if(val==''){
		return true;
	}
	var pattern=/^http:\/\/$/;
	if(!pattern.test(val.substring(0,7))){
		addFieldError(elem.id,field+'请确认符合http://IP格式或http://域名格式');
		elem.focus();
		return false;
	}
	return true;
}


/*
 * 39、1或1,2或1,2,3,4,5,6数据格式验证(即:用“,”号分隔的1——6数字验证)
 */
function check123456CommaSplit(elem,field){
	var val=trim(elem.value);
	var len = val.length;
	var index = len;
	var value, flag=true;
	while(index>0){
		value = val.substring(index -1, index);
		//寄数位置是数字,偶数位置是“,”分隔符(如:1,2,3,4,5,6)
		if(index%2==1){
			if(value!='1' && value!='2' && value!='3' && value!='4' && value!='5'&& value!='6'){
				addFieldError(elem.id,field+'只能输入用“,”号分隔的1——6数字');
				elem.focus();
				return false;
			}
		}else{
			if(value!=','){
				addFieldError(elem.id,field+'只能输入用“,”号分隔的1——6数字');
				elem.focus();
				return false;
			}
		}

		index = index -1;	
	}
	
	return true;

}

/**
*40、验证输入域中不能有<>~!@#$%&|非法字符
*/
function checkInvalidChar(obj){
	var pattern = /[\<\>\&~!@#$%|]/;
	if(pattern.test(obj.value)){
		addFieldErrorWithObject(obj,"不能有<>~!@#$%&|等字符");
		return false;
	}
	return true;
}

String.prototype.trim=function(){
        return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.ltrim=function(){
        return this.replace(/(^\s*)/g,"");
}
String.prototype.rtrim=function(){
        return this.replace(/(\s*$)/g,"");
}
/**
*将<和>转译
*/
function invalidCharReplace(text){
		a=text.replace(/>/g,">");
		text=a.replace(/</g,"<");
		return text;
	}
	
/**
*41、表单中所有输入框的内容去掉前后空格
*/
function trimAllElementsToSave(form){
	var formMap = new Array();
	var _len = form.elements.length;
	for(var i = 0; i < _len; i ++){
		var child = form.elements[i];
		if(!child)
			continue;
		if(child.tagName == 'INPUT'){
			var type = child.type.toLowerCase();
			if(type == 'text' || type == 'hidden')
				child.value = trim(child.value);
		}
		else if(child.tagName == 'TEXTAREA')
			child.value = trim(child.value);
	}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值