JavaScript 常用校验检查 的封装和汇总 (Web开发中都会用到):


/**
 * JavaScript 检查库
 * @author Beau Virgill 
 * @version 1.20
 * @last modify time 2013/2/24
 * #@ validate.js
 * 第一类 检查并返回检查结果(true or false)
 * a-1. ifDigit(str,allowNull)  是否为合法非负整数(examples/ifDigit.html)
 * a-2. ifLetter(str,allowNull) 是否为英文字母
 * a-3. ifDay(str,allowNull)    是否为天数
 * a-4. ifMonth(str,allowNull)  是否为月份
 * a-5. ifYear(str,allowNull)   是否为年份
 * a-6. ifDate(String,allowNull)   是否为日期
 * a-7. ifEmail(String,allowNull)  是否为邮件地址
 * a-8. ifPhone(String,allowNull)  是否为电话号码
 * a-9. ifGBK(String,allowNull)    是否为中文字符
 * a-10.ifMoney(String,allowNull)  是否为合法货币数字
 * a-11 ifMoenyRange(String,int,int,allowNull) 判断字符串是否为合法钱数,且是否超过限定范围
 * a-12. checkMonthLength(mm, dd, yyyy) 判断是否为合法日期
 * a-13. getSelectedButton(buttonGroup) 判断buttongroup为名的一组radio中有无被选中的项

 * 第二类 检查后直接报错
 * b-1. isDigit(Object,allowNull)	 是否为数字
 * b-2. isLetter(Object,allowNull) 是否为字母
 * b-3. isDay(Object,allowNull)    是否为天数
 * b-4. isMonth(Object,allowNull)  是否为月份
 * b-5. isYear(Object,allowNull)   是否为年份
 * b-6. isDate(Object,allowNull)   是否为日期
 * b-7. isEmail(Object,allowNull)  是否为邮件地址
 * b-8. isPhone(Object,allowNull)  是否为电话号码
 * b-9. isGBK(Object,allowNull,msgname)    是否为中文字符(必须不能是中文)
 * b-10. isMoney(Object,allowNull)  是否为合法货币数字
 * b-11. isMoneyRange(obj,minValue,maxValue,allowNull)	判断是否合法钱数且是否超过限定额度
 * b-12. checkLeng(Object, min, max,allowNull) 字符串长度是否在指定长度范围内
 * b-13.1 checkValidDate(yyObject,mmObject,ddObject,allowNull)	对日期进行全面的检查
 * b-13.2 checkValidDateRange(yyObject1,mmObject1,ddObject1,allowNull1,yyObject2,mmObject2,ddObject2,allowNull2)
 *		检查起始日期及截止日期
 * b-15. showMsg(String, Object)  显示提示信息String,光标焦点落在Object上,返回false
 * b-16. isMobile(Object,allowNull)  是否为手机号码
 * b-17. checkGBK(Object,allowNull,msgname)    是否为中文字符(必须是中文)
 * b-18 isPhone(Object,allowNull,msgname) 是否为固定电话号码
 * b-19 isMobile(obj,allwoNull,msgname))是否为手机号码
 * b-20 isEmail(Object,allwoNull,msgname)是否为邮件地址
 * b-21  checkCompareDate(objbegintime,objendtime,msgbeginname,msgendname,ischecknow) 比较开始时间和结束时间
 * 第三类 功能函数,并不报错
 * c-1. getLength(String)  获取字符长度(每个中文字符为2个字符)
 * c-2. trim(String)  去掉字符串前后的空格并返回
 * c-3. textsTrim(formname)	将form中所有的text文本进行trim操作。

 */
function checkValidStr(name){
    for (i = 0; i < name.length; i++) {
		 if (name.charAt(i) == '$'
			 || name.charAt(i) == '!'
			 || name.charAt(i) == '~'
			 || name.charAt(i) == '`'
			 || name.charAt(i) == '?'
			 || name.charAt(i) == '='
			 || name.charAt(i) == '/'
			 || name.charAt(i) == '|'
			 || name.charAt(i) == '+'
			 || name.charAt(i) == '#'
			 || name.charAt(i) == '%'
			 || name.charAt(i) == '^'
			 || name.charAt(i) == '\''
			 || name.charAt(i) == ';'
			 || name.charAt(i) == '{'
			 || name.charAt(i) == '}'
			 || name.charAt(i) == ']'
			 || name.charAt(i) == '['
			 || name.charAt(i) == ')'
			 || name.charAt(i) == '('
			 || name.charAt(i) == '<'
			 || name.charAt(i) == '>'
			 || name.charAt(i) == '&'
			 || name.charAt(i) == ' '
			 || name.charAt(i) == '"')
		  return false;
		}
		return true;
}

//建立者:Beau Virgill
//判断字符串是否为合法非负整数
// a-1 ifDigit(str,allowNull)
function ifDigit(str,allowNull)
{
	slen=str.length;
	if(slen==0) return allowNull;
	for (i=0; i<slen; i++){
		cc = str.charAt(i);
		if (cc <"0" || cc >"9")
		{
			return false;
		}
	}
	return true;
}

//建立者:Beau Virgill
//功能:判断字符串是否都是英文字母
// a-2 ifLetter(str,allowNull)
function ifLetter(str,allowNull ){	
	slen=getLength(str);
	if (slen==0) return allowNull;
		
	str = str.toUpperCase();
	for ( var i = 0 ; i < slen; i ++ ){
		if ( str.charAt(i) < "A" || str.charAt(i) > "Z" )
			return false;
	}
	return true;
}

// a-3 ifDay(str,allowNull)
function ifDay(str,allowNull)
{
	slen=getLength(str);
	if (slen==0) return allowNull;
	if (!ifDigit(str,allowNull))
	{
		return false;
	}
	if (str < "01" || str > "31")
	{
		return false;
	}
	return true;
}

// a-4 ifMonth(str,allowNull)
function ifMonth(str,allowNull)
{	
	slen=getLength(str);
	if (slen==0) return allowNull;
	
	if (!ifDigit(str,allowNull))
	{
		return false;
	}
	if (str >="1" && str<="9" && slen==1) return true;
	if (str >="01" && str <="12") return true;
	return false;
}

// a-5 ifYear(str,allowNull)
function ifYear(str,allowNull)
{
	slen=getLength(str);
	if (slen==0) return allowNull;

	if (!ifDigit(str,allowNull))
	{
		return false;
	}
	if (str < "1800" || slen < 4)
	{
		return false;
	}
	return true;
}

// a-6 ifDate(str,allowNull)
function ifDate(str,allowNull)
{
	slen=getLength(str);
	if (slen==0) return allowNull;
	if (!ifDigit(str,allowNull))
	{
		return false;
	}
	else if (slen < 8)
	{
		return false;
	}
	cc = str.substr(0,4);
	if (cc < "1800")
	{
		return false;
	}
	cc = str.substr(4,2);
	if (cc < "01" || cc > "12")
	{
		return false;
	}
	cc = str.substr(6,2);
	if (cc < "01" || cc > "31")
	{
		return false;
	}
	return true;
}

//建立者:Beau Virgill
//判断字符串是否为合法邮件地址
// a-7 ifEmail(str,allowNull)
function ifEmail(str,allowNull)
{
	if(str.length==0) return allowNull;
	i=str.indexOf("@");
	j=str.lastIndexOf(".");
	if (i == -1 || j == -1 || i > j)
	{
		return false;
	}
	return true;
}

// a-8 ifPhone(str,allowNull)
function ifPhone(str,allowNull)
{
	slen=getLength(str);
	if (slen==0) return allowNull;
	for (i=0; i<slen; i++){
		cc = str.charAt(i);
		if ((cc <"0" || cc >"9") && cc != "-" && cc!="+" && cc!="(" && cc !=")" && cc !="/")
		{
			return false;
		}
	}
	return true;
}

// a-9 ifGBK(str,allowNull)
function ifGBK(str,allowNull)
{
	slen=getLength(str);
	if (slen==0) return allowNull;
	for (i=0; i<slen; i++){
		cc = str.charAt(i);
		cc = escape(cc);
		if (cc.indexOf("%u") >= 0)
		{
			return false;
		}
	}
	return true;
}

//建立者:Beau Virgill
//判断字符串是否为合法钱数
// a-10 ifMoeny(String)
function ifMoney(str,allowNull){

	if (str.length==0) return allowNull;

	if ( ( pos = str.indexOf( "." ) ) != -1 ){
	   if (str.length==1)
	     return false;
	     
	   if ( ( pos = str.indexOf(".", pos + 1) )  != -1 )
	     return false;
	}

	for ( var i = 0 ; i < str.length; i ++ ){
	  if (( str.charAt(i) < "0" || str.charAt(i) > "9" )&&(str.charAt(i)!="."))
	    return false;
	}
	
	return true;
}

//建立者:Beau Virgill
//判断字符串是否为合法钱数,且是否超过限定范围
// a-11 ifMoneyRange(str,minValue,maxValue,allowNull)
function ifMoneyRange(str,minValue,maxValue,allowNull)
{
	if (str.length==0) return allowNull;
	
	if(!ifMoney(str))
		return false;
	
	if(parseFloat(str)>=maxValue)
		return false;
	if(parseFloat(str)<minValue)
		return false;
	return true;
}

//建立者:Beau Virgill
//判断是否为合法日期
// a-12 checkMonthLength(mm, dd, yyyy)
function checkMonthLength(mm,dd,yyyy){
    if((mm==4||mm==6||mm==9||mm==11) && dd>30){
      return false;
    }else if(mm==2){
      if(yyyy % 4 >0 && dd>28){
        return false;
      }else if(dd>29){
        return false;
      }
    }else if(dd>31){
      return false;
    }
    return true;  
}

//建立者:Beau Virgill
//判断buttongroup为名的一组radio中有无被选中的项
// a-13 getSelectButton(buttonGroup)
function getSelectedButton(buttonGroup){
  	for (var i=0;i<buttonGroup.length;i++){
  		if (buttonGroup[i].checked) return true;
  	}
  	return false;
}


//建立者:默认
//功能: 检查是否为数字
//示例: isDigit(String,allowNull)
//输入参数: 需要检查的表单对象名称
//输出参数: true或出错信息
// b-1.1 isDigit(Object,allowNull)
function isDigit(obj,allowNull,msgname)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须填写" + msgname + "!",obj);
		return true;
	}
	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		if(!(cc == '.')){
			if (cc <"0" || cc >"9") return showMsg(msgname + "必须为数字!",obj);
	        }
	}
	
	return true;
}

//建立者:Beau Virgill
//功能: 检查是否为数字
//示例: isDigitMaxlength(String obj,int length,boolean allowNull)
//输入参数: 需要检查的表单对象名称,允许的最大长度
//输出参数: true或出错信息
// b-1.2 isDigitMaxlength(Object,maxlength,allowNull)
function isDigitMaxlength(obj,maxlength,allowNull)
{
	
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入一个长度不超过"+maxlength+"的整数!",obj);
		return true;
	}
	if(slen>maxlength) return showMsg("长度最大为"+maxlength+"!",obj);
	
	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		if (cc <"0" || cc >"9")
		{
			return showMsg("必须为整数!",obj);
		}
	}
	return true;
}

//建立者:Beau Virgill
//功能:判断字符串是否都是字母
// b-2 isLetter(Object,allowNull)
function isLetter(obj,allowNull){
	obj.value=trim(obj.value);
	str = obj.value;
	slen=getLength(obj.value);
	if ( slen == 0 ){
		if(!allowNull) return showMsg("必须输入!",obj);
		return true;
	}
	str = str.toUpperCase();
	for ( var i = 0 ; i < slen; i ++ ){
		if ( str.charAt(i) < "A" || str.charAt(i) > "Z" )
			return showMsg("必须都是英文字母!",obj);
	}
	return true;
}

// b-3 isDay(Object,allowNull)
function isDay(obj,allowNull)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入!",obj);
		return true;
	}
	if (!ifDigit(obj.value))
	{
		return false;
	}
	if (obj.value < "01" || obj.value > "31")
	{
		return showMsg("日格式有误,正确的格式为:DD,如:02",obj);
	}
	return true;
}

// b-4 isMoneth(Object,allowNull)
function isMonth(obj,allowNull)
{	
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入!",obj);
		return true;
	}
	if (!ifDigit(obj.value))
	{
		return false;
	}
	if (obj.value < "01" || obj.value > "12")
	{
		return showMsg("月份格式有误,正确的格式为:MM,如:01",obj);
	}
}

//建立者:默认
//功能:检查是否合法年份
//示例:isYear(Object)
//输入参数:被检查字符串
//输出参数:true 或 错误信息
// b-5 isYear(Object)
function isYear(obj,allowNull)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入!",obj);
		return true;
	}
	slen=obj.value.length;
	if (!ifDigit(obj.value))
	{
		return showMsg("日期有误,不能含有非数字的字符!",obj);
	}
	if (obj.value < "1800" || slen < 4)
	{
		return showMsg("年份格式有误,正确的格式为:YYYY,如:1999",obj);
	}
}

//建立者:默认
//功能:检查是否合法日期
//示例:isDate(Object)
//输入参数:被检查字符串
//输出参数:true 或 错误信息
// b-6 isDate(Object)
function isDate(obj,allowNull)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入!",obj);
		return true;
	}
	
	slen=obj.value.length;
	if (!ifDigit(obj.value))
	{
		return showMsg("日期有误,不能含有非数字的字符!",obj);
	}
	else if (slen < 8)
	{
		return showMsg("日期格式有误,正确的格式为:YYYYMMDD,如:19990102",obj);
	}
	cc = obj.value.substr(0,4);
	if (cc < "1800")
	{
		return showMsg("年份格式有误,正确的格式为:YYYY,如:1999",obj);
	}
	cc = obj.value.substr(4,2);
	if (cc < "01" || cc > "12")
	{
		return showMsg("月份格式有误,正确的格式为:MM,如:01",obj);
	}
	cc = obj.value.substr(6,2);
	if (cc < "01" || cc > "31")
	{
		return showMsg("日格式有误,正确的格式为:DD,如:02",obj);
	}
	return true;
}

// b-7 isEmail(Object)
function isEmail(obj,allowNull)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull)
			return showMsg("必须输入!",obj);
		return true;
	}

	i=obj.value.indexOf("@");
	j=obj.value.lastIndexOf(".");
	// if (! ifGBK(obj)) i = -1;
	if (i == -1 || j == -1 || i > j)
	{
		return showMsg("电子邮件书写有误!",obj);
	}
	return true;
}

// b-8 isPhone(Object)
function isPhone(obj,allwoNull)
{

	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allwoNull){
			return showMsg("必须输入!",obj);
		}
		return true;
	}
	
	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		if ((cc <"0" || cc >"9") && cc != "-" && cc!="+" && cc!="(" && cc !=")" && cc !="/")
		{
			return showMsg("电话号码含有非法字符!",obj);
		}
	}
	return true;
}

// b-9 isGBK(Object,allowNull,msgname)
function isGBK(obj,allowNull,msgname)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入" + msgname + "!",obj);
		return true;
	}

	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		cc = escape(cc);
		if (cc.indexOf("%u") >= 0)
		{
			return showMsg( msgname + " 不能为汉字!",obj);
		}
	}
	return true;
}

//建立者:Beau Virgill
//判断字符串是否为合法钱数
// b-10 isMoney(Object,allowNull)
function isMoney(obj,allowNull)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入!",obj);
		return true;
	}

	if (ifMoney(obj.value))
	{
		return true;
	}
	else
	{
		return showMsg("不是合法的货币数!",obj);
	}	
	return true;
}

//建立者:Beau Virgill
//判断是否合法钱数且是否超过限定额度
//b-11 isMoneyRange(obj,minValue,maxValue)
function isMoneyRange(obj,minValue,maxValue,allowNull)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入!",obj);
		return true;
	}

	obj.value=trim(obj.value);
	if(obj.value=="") return true;
	
	if(!ifMoney(obj.value))
		return shoMsg("不是合法的货币数!",obj);
	
	if(parseFloat(obj.value)>=maxValue)
		return showMsg("货币值过大!",obj);
	if(parseFloat(obj.value)<minValue)
		return showMsg("货币值过小!",obj);
	return true;
}

//建立者:
//功能: 检查字段长度是否在指定范围内
//示例: chekLeng(form1.t1, 4,10)
//输入参数: 需要检查的表单对象名称,最小长度,最大长度
//输出参数: true
// b-12 checkLeng(obj, min, max,allowNull)
function checkLeng(obj, min, max,allowNull , msgname )
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入" + msgname + "!",obj);
		return true;
	}

	if (slen < min)
	{
		return showMsg("请最少输入 " + min + " 个字符!",obj);

	}
	if (slen > max)
	{
		return showMsg(msgname + "请最多输入 " + max + " 个英文字符或"+max/2+"个中文字符!",obj);

	}
	return true;
}



//建立者:Beau Virgill
//功能:对日期进行全面的检查
//输入参数:yyObject:年的object;mmObject:月的object;ddObject:日的object;
//输入参数:allowNull:true允许日期为空;false:必须选择日期
//输出参数:ture of false;
// b-13.1 checkValiDate(mmObject,ddObject,yyObject,allowNull)
function checkValidDate(yyObject,mmObject,ddObject,allowNull){
  	if(allowNull){
  		if(!(((!yyObject.options[0].selected)&&(!mmObject.options[0].selected)&&(!ddObject.options[0].selected)) || ((yyObject.options[0].selected)&&(mmObject.options[0].selected)&&(ddObject.options[0].selected))))
  			return showMsg("日期必须全部选择或者全部不选择!",yyObject);
  	}else{
  		if(yyObject.options[0].selected){
  			return showMsg("请选择日期的年!",yyObject);
  		}
  		if(mmObject.options[0].selected){
  			return showMsg("请选择日期的月!",mmObject);
  		}
  		if(ddObject.options[0].selected){
  			return showMsg("请选择日期的日!",ddObject);
  		}
  	}
  	
  	if(!yyObject.options[0].selected){
  		var my_year=yyObject[yyObject.selectedIndex].value;
  		var my_month=mmObject[mmObject.selectedIndex].value;
  		var my_day=ddObject[ddObject.selectedIndex].value;
  		
  		if(!checkMonthLength(my_month,my_day,my_year))
  			return showMsg("选择的日期不合法!",ddObject);
  	}
  	return true;
}


//建立者:Beau Virgill
//功能:对日期进行全面的检查
//输入参数:yyObject1:其始年的object;mmObject1:其始月的object;ddObject1:其始日的object;
//输入参数:allowNull1:起始日期true允许日期为空;false:必须选择日期
//输入参数:yyObject2:截止年的object;mmObject2:截止月的object;ddObject2:截止日的object;
//输入参数:allowNull2:截止日期true允许日期为空;false:必须选择日期
//输出参数:ture of false;
// b-13.2 checkValidDateRange(mmObject1,ddObject1,yyObject1,allowNull1,mmObject2,ddObject2,yyObject2,allowNull2)
function checkValidDateRange(yyObject1,mmObject1,ddObject1,allowNull1,yyObject2,mmObject2,ddObject2,allowNull2){
	if(!checkValidDate(mmObject1,ddObject1,yyObject1,allowNull1)) return false;
	if(!checkValidDate(mmObject2,ddObject2,yyObject2,allowNull2)) return false;
	
	if((!yyObject1.options[0].selected) && (!yyObject2.options[0].selected)){
		date1=new Date(yyObject1-1900,mmObject1-1,ddObject1);
		date2=new Date(yyObject2-1900,mmObject2-1,ddObject2);
		if(date1>date2){
			return showMsg("起始日期不能大于截止日期!",yyObject1);
		}
	}
	return true;
}


//建立者:Beau Virgill
//功能:显示提示信息Msg,光标焦点落在Obj上,返回false
//     主要用于检查必要字段是否正确
//示例:showMsg("用户名不能为空.",myform.username)
//输入参数:Msg(提示信息) Obj(光标焦点对象)
//输出参数:false
// b-15 showMsg(String, Object)
function showMsg(Msg, Obj)
{
	alert( Msg );
	Obj.focus();
	return false;
}

//是否为手机号码
function isMobile(obj,allwoNull)
{

	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allwoNull){
			return showMsg("必须输入!",obj);
		}
		return true;
	}
	
	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		if ((cc <"0" || cc >"9") && cc != "-" && cc!="+" && cc!="(" && cc !=")" && cc !="/")
		{
			return showMsg("手机号码含有非法字符!",obj);
		}
	}
	if(slen != 11)
        return showMsg("手机号码长度不正确!",obj);
	tempNo = obj.value.substring(0, 4)*1;

	if (tempNo >= 1300 && tempNo <= 1399)
			return true;
	else
       return showMsg("手机号码不正确!",obj);
	return true;
}
// b-17 checkGBK(Object,allowNull,msgname)
function checkGBK(obj,allowNull,msgname)
{

	obj.value=trim(obj.value);
	slen=obj.value.length;
	if(slen==0){
		if(!allowNull) 
			return showMsg("必须输入" + msgname + "!",obj);
		return true;
	}

	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		cc = escape(cc);
		if (!(cc.indexOf("%u") >= 0))
		{
		  return showMsg( msgname + " 必须为汉字!",obj);
	        }
	
	}
	return true;
}
// b-18 isPhone(Object,allowNull,msgname)
function isPhone(obj,allwoNull,msgname)
{

	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allwoNull){
			return showMsg("必须输入!",obj);
		}
		return true;
	}
	
	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		if ((cc <"0" || cc >"9") && cc != "-" && cc!="+" && cc!="(" && cc !=")" && cc !="/")
		{
			return showMsg( msgname + "含有非法字符!",obj);
		}
	}
	return true;
}
//b-19 isMobile(obj,allwoNull,msgname)是否为手机号码
function isMobile(obj,allwoNull,msgname)
{

	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allwoNull){
			return showMsg("必须输入!",obj);
		}
		return true;
	}
	
	for (i=0; i<slen; i++){
		cc = obj.value.charAt(i);
		if ((cc <"0" || cc >"9") && cc != "-" && cc!="+" && cc!="(" && cc !=")" && cc !="/")
		{
			return showMsg(msgname+"含有非法字符!",obj);
		}
	}
	if(slen != 11)
        return showMsg(msgname+"长度不正确!",obj);
	tempNo = obj.value.substring(0, 4)*1;

	if (tempNo >= 1300 && tempNo <= 1399)
			return true;
	else
        return showMsg(msgname+"不正确!",obj);
	return true;
}
// b-20 isEmail(Object,allwoNull,msgname)
function isEmail(obj,allowNull,msgname)
{
	obj.value=trim(obj.value);
	slen=getLength(obj.value);
	if(slen==0){
		if(!allowNull)
			return showMsg("必须输入!",obj);
		return true;
	}

	i=obj.value.indexOf("@");
	j=obj.value.lastIndexOf(".");
	// if (! ifGBK(obj)) i = -1;
	if (i == -1 || j == -1 || i > j)
	{
		return showMsg(msgname+"书写有误!",obj);
	}
	return true;
}
// b-21  checkCompareDate(objbegintime,objendtime,msgbeginname,msgendname,ischecknow)
function checkCompareDate(objbegintime,objendtime,msgbeginname,msgendname,ischecknow){
    var flag = false;  
		var sttime = objbegintime.value;
		var endtime = objendtime.value;

		 var today = new Date();
	    var year = today.getYear();
	    var month = today.getMonth() + 1;	
	    if(parseInt(month)<10){
	        month = "0" + parseInt(month);
	    }
	    var day = today.getDate();
	    if(parseInt(day)<10){
	        day = "0" + parseInt(day);
	    }
	
	    var cur = year + "-" + month + "-" + day;
	  	if(ischecknow) {
	    if(sttime > cur){
	        alert("尊敬的用户,您输入的"+msgbeginname+"应小于当前时间!");
	        objbegintime.focus();
	        return false;	    	
	    }
      }
	    if(sttime>endtime && endtime != ""){
	        alert("尊敬的用户,您输入的"+msgbeginname+"应小于"+msgendname+"!");
	        objbegintime.focus();
	        return false;	    
	    }
	
	    return true;	   
}
/**
以下是第三类
*/
//建立者:Beau Virgill
//加入了汉字的长度判断
// c-1 getLength(String)
function getLength(str){
	var templen=str.length;
	if(navigator.appName=='Netscape') return templen;
	for(var i=0;i<str.length;i++){
    		var rstr=escape(str.substring(i,i+1)); 
    		if (rstr.substring(0,2)=="%u"){ 
       			templen++;
    		} 
  	}
	return templen;
}

//建立者:Beau Virgill
//功能:去掉字符串前后的空格并返回
//输入参数:inputStr(待处理的字符串)theForm.mobile
//输出参数:inputStr(处理后的字符串)
// c-2 trim(String)
function trim(inputStr) {
	var result = inputStr;
	while (result.substring(0,1) == " ") {
		result = result.substring(1,result.length);
	}
	
	while (result.substring(result.length-1, result.length) == " ") {
		result = result.substring(0, result.length-1);
	}
		
	return result;
}


//建立者:Beau Virgill
//功能:将form中所有的text文本进行trim操作。
//输入参数:myform(form名)
//输出参数:无
// c-3 textTrim(form名称)
function textsTrim(myform){
  	for(var i=0;i<myform.elements.length;i++){
  		var etype=myform.elements[i].type;
  		if(etype = "text"){
 			myform.elements[i].value=trim(myform.elements[i].value);
  		}
  	}
}


function matchForbiddenCharacter( matchstr )
{
  var backStr = false;
  matchstr = replaceGBK( matchstr ) ;
  var re = /[^A-Za-z0-9_\.]/
  if ( re.test( matchstr )==true ) {
         backStr = true;
  }
  return backStr;
}

function replaceGBK(obj)
{
    var reStr = "";
        slen=obj.length;
        for (i=0; i<slen; i++){
                cc = obj.charAt(i);
                if ( cc == ' ' )
                {
                  cc = '_' ;
                }
                else
                {
                  cc = escape(cc);
                  if (cc.indexOf("%u") > -1)
                  {
                    cc = '_';
                  }
                }
                reStr += cc;
        }
        return reStr;
}

//建立者:Beau Virgill
//功能:鼠标移到对象上,改变指鼠标针,对象的背景颜色。
//输入参数:src对象ID,clrOver背景颜色,status为1表示改变指针样式,非1不改变
//输出参数:无
function mOvr(src,clrOver,status){
	if (!src.contains(event.fromElement)) {
		if(status==1)
		{
			src.style.cursor = 'hand';
		}
		src.bgColor = clrOver;
	}
}
//建立者:Beau Virgill
//功能:鼠标从对象上移出,改变指鼠标针,对象的背景颜色。
//输入参数:src对象ID,clrOver背景颜色,status为1表示改变指针样式,非1不改变
//输出参数:无
function mOut(src,clrIn,status)  {
	if (!src.contains(event.toElement)) {
		if(status==1)
			{
				src.style.cursor = 'default';
			}
		src.bgColor = clrIn;
	}
}

//建立者:Beau Virgill
//功能:验证数字和字母
//输入参数:str 字符串
//输出参数:boolean
function validateCharAndNumber(str){
	if(str==""){
		return false;
	}
	var myReg =/^[A-Za-z0-9]+$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}



//建立者:Beau Virgill
//功能:验证数字
//输入参数:str 字符串
//输出参数:boolean
function validateNumber(str){
	if(str==""){
		return false;
	}
	var myReg =/^[0-9]+$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}

//建立者:Beau Virgill
//功能:检测邮件地址
//输入参数:str 字符串
//输出参数:boolean
function validateEmail(str){
	if(str==""){
		return false;
	}
	var myReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}

//建立者:Beau Virgill
//功能:检测是否是移动的手机号
//输入参数:str 字符串
//输出参数:boolean
function validateMobileNum2(str){
	if(str==""){
		return false;
	}
	var myReg = /^(134|135|136|137|138|139|153|158|159|150|151|152|157|188|147|187|182)\d{8}$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}

//建立者:Beau Virgill
//功能:检测手机号
//输入参数:str 字符串
//输出参数:boolean
function validateMobileNum(str){
	if(str==""){
		return false;
	}
	var myReg = /^(134|135|136|137|138|139|153|158|159|150|151|152|157|188|147|187|182)\d{8}$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}
//建立者:Beau Virgill
//功能:验证日期格式
//输入参数:str 字符串
//输出参数:boolean
function isDate(str){
   if(str==""){ 
     return false;
   }
    var myReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
    if(myReg.test(str)){
		return false; 
	}
	return true;
}

//建立者:Beau Virgill
//功能:验证邮政编码
//输入参数:str 字符串
//输出参数:boolean
function validateZipCode(str){
	if(str==""){
		return false;
	}
	var myReg = /^[1-9]\d{5}$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}

//建立者:Beau Virgill
//功能:检查电话号码或小灵通用户
//输入参数:str 字符串
//输出参数:boolean
function validatePhone(str){
	if(str==""){
		return false;
	}
	var myReg = /\d{3}-\d{8}|\d{4}-\d{7}|\d{3}-\d{7}|\d{4}-\d{8}/;
	if(myReg.test(str)){
		return true;
	}
return false;
}

//建立者:Beau Virgill
//功能:检测是否为联通的手机号
//输入参数:str 字符串
//输出参数:boolean
function isMobileByLianTong(str){
	if(str==""){
		return false;
	}
	var myReg = /^(130|131|132|133)\d{8}$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}

//检测float数据类型
function checkFloat(str)
{
	if(str==""){
		return false;
	}
	var myReg = /^\d{1,7}.\d{2}$/;
	if(myReg.test(str)){
		return true;
	}
return false;
}


//建立者:Beau Virgill
//功能:复选框全选
//输入参数:e为全选 ,itemName为复选框名
//输出参数:无
function checkAll(e, itemName)
{
  var aa = document.getElementsByName(itemName);
  for (var i=0; i<aa.length; i++)
  {  
  	aa[i].checked  = e.checked;
  }   
}
function checkItem(e, allName)
{
  var all = document.getElementsByName(allName)[0];
  if(!e.checked) all.checked = false;
  else
  {
    var aa = document.getElementsByName(e.name);
    for (var i=0; i<aa.length; i++)
     if(!aa[i].checked) return;
    all.checked = true;
  }
}


//检测复选框的状态,全否return false,else return true
function IscheckAllBox(itemName)
{
  var aa = document.getElementsByName(itemName);
  for (var i=0; i<aa.length; i++)
  {  
  	if(aa[i].checked)return true;
  }   
  return false;
}

	function submitForm(){
		var hasselected = false;
		var elems = theform.idList;
		for( var i=0;i<elems.length;i++ ){
		  if( elems[i].checked ){    
			hasselected = true;
		  }
		}
		
		if( !hasselected ){
			alert( "至少选择一条删除数据!" );  
			return false;
		} 
		theform.action = "beforeDelGroupTsysAdStation.do";
		theform.submit();
	}


function selectAllNode(aform,v){
	    
	if(aform != null){
	var elems = aform.elements;
		
	for(var i=0;i<elems.length;i++){
        	if(elems[i].type == "checkbox")
       		 elems[i].checked = v;
	}
	}
}

//截取标题sum字符个数
function getNewsTitle(str,sum){
        var rstr=str; 
        var len=0;
            len=getStrLength(rstr);
	if(len>sum){
	 var templen=0;
	 var result="";
	  for(var i=0;i<rstr.length;i++){
	    templen++
	    var tempstr=escape(rstr.substring(i,i+1));
    	       if (tempstr.substring(0,2)=="%u"){ 
       			templen++;
    		} 
    		result+=rstr.substring(i,i+1);
    	        if(templen>=(sum-2)){
    	                break;
    	       }
    	       
	  }
	return result+'…';
	}else{
	return rstr;
	}
}
//按单字节计算字符串的长度
function getStrLen(str){
	var len = 0;
	var cnstrCount = 0;	
	for(var i = 0 ; i < str.length ; i++){
		if(str.charCodeAt(i)>255)
			cnstrCount = cnstrCount + 1 ;
	}
	len = str.length + cnstrCount;
	return len;
}

function getStrLength(str){
	var templen=str.length;
	if(navigator.appName=='Netscape') return templen;
	for(var i=0;i<str.length;i++){
    		var rstr=escape(str.substring(i,i+1)); 
    		if (rstr.substring(0,2)=="%u"){ 
       			templen++;
    		} 
  	}
	return templen;
}


//建立者:Beau Virgill
//获取当前max年内的年份
//参数selectBox为下拉框的名称,max 为范围
//输出option元素
function getOptionByYear(selectBox,max){ 
//当前日期
 d = new Date();	
 	for(i =0 ; i < max ; i++){ 		
 		myYear = d.getYear()+ 1 + i - max;
		selectBox.options[selectBox.length] = new Option( myYear,myYear);
		if(i == (max - 1)){
			selectBox.options[i + 1].selected = true;
		}
	}
}

//建立者:Beau Virgill
//对当前日期做默认选中处理
//参数selectBox为下拉框的名称,dis为需要默认的月份与当前的月份距离,如果在当前月份之前,则为负数(-1,-2....)否则为(1,2....)当前为0
//输出option元素
//调用方式:getOptionByMonth(form1.selectBox, -1)
function getOptionByMonth(selectBox,dis){
	d = new Date();
	var month = d.getMonth() + 1;
	for(var i = 0 ; i < selectBox.length ; i ++){
		if(selectBox.options[i].value == (month + dis)){
			selectBox.options[i].selected = true;
		}
	}
}


//建立者:Beau Virgill
//按比率打开一个showModalDialog窗口
//url为打开的链接,bl为相当与屏幕的比率 如0.8,就是百分之八十
//returnvalue可以返回一个对象
function showModalWindow(url,bl){
 	var h = screen.availHeight*bl;
	var w = screen.availWidth*bl;
 	var returnvalue=showModalDialog(url,'tempwindow',"status:no;resizable:no;help:no;dialogHeight:"+ h +"px; dialogWidth:"+w + "px");
	return returnvalue;
}

//建立者:Beau Virgill
//转换月份,将一位的月份转换成二位的月份,如:1转换成01
function converMonth(str){
	if(str.length==1){		
		return "0"+str;
	}else{
		return str;
	}
}

//建立者:Beau Virgill
//根据主列表的变化加载子列表
//locationObj主列表对象,targetObj子列表对象,sublist数组
function changelocation(locationObj,targetObj,sublist)
    {
    targetObj.length = 0; 
	targetObj.options[targetObj.length] = new Option("请选择", "");
    var locationid=locationObj.value;
	if(locationid!=""){
    for (var i=0;i < sublist.length; i++)
        {
            if (sublist[i][2] == locationid)
            { 
                targetObj.options[targetObj.length] = new Option(sublist[i][1], sublist[i][0]);
            }        
        }
	}
}

//建立者 
//如果TEMP参数有值,将TEMP设置selected
//locationObj主列表对象,targetObj子列表对象,sublist数组,TEMP值
function changelocation2(locationObj,targetObj,sublist,temp)
    {

    targetObj.length = 0; 
	targetObj.options[targetObj.length] = new Option("请选择", "");
    var locationid=locationObj.value;
	if(locationid!=""){
    for (var i=0;i < sublist.length; i++)
        {
            if (sublist[i][2] == locationid)
            { 
                targetObj.options[targetObj.length] = new Option(sublist[i][1], sublist[i][0]);
                
                if(temp != null && temp != ''){
                	if(sublist[i][0] == temp){
                		targetObj.options[targetObj.length-1].selected = true;
                	}
                }
            }        
        }
	}
}