表单验证公共js

来源:互联网 发布:北京幼儿园膳食软件 编辑:程序博客网 时间:2024/04/28 02:19
/**文件名称:CommonUtil.js作者: Yuce编制时间: 2010-03-24文件内容:一些常用的js公用类。工具类包括方法:g_FormFieldIsNull 判断DBForm的指定字段是否为空g_GetObjXY  获取页面中某个元素的绝对座标g_IsDigit     校验是否全由数字组成g_IsFloat(s,pDecimal) 校验是否是合法的小数g_IsEmail  判断合法的email地址g_IsTeleNumber 校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”g_IsPostalCode 校验邮政编码 6位数字g_IsMobileNumber 校验手机号码:必须以数字开头,除数字外,可含有“-”g_IsDate判断日期格式是否合法,符合yyyy-mm-ddg_IsDateTime校验日期时间是否合法yyyy-mm-dd H24:MI:SS这种格式的日期+时间g_getStrLen 获取字符串的长度,如果字符串中包括中文等双字节代码,则其长度算为2。g_getSubStrInByte获取子字符串,参数长度为字节长度。g_StringTrim字符串trim方法,取消到前后的空格g_GetSysDateTime请求数据库获取数据库的日期和时间g_GetSysDate请求数据库获取数据库日期g_GetSysTime请求数据库获取数据库时间  g_CheckInputNum         控制只能输入数字  g_IDCardNumber      判断是否是身份证号码  g_FormatDate(aDate,format) 格式化日期时间方法PARAMETER: aDate:js中的aDate对象,format-格式字符串.如:yyyy-MM-dd hh:mm:ss    g_BeforePasteNum()  粘贴时控制只能贴入数字和回车 需要绑定onbeforePaste事件  g_BeforePasteEnglish() 粘贴时控制只能贴入数字和字母,需要绑定onbeforePaste事件    g_CompareDate       判断日期大小  g_MonthsBetween  计算月份差(忽略天,先将时间trunc到月,然后做比较)**//** 判断DBForm的指定字段是否为空,如果为空返回true,并alert警告。否则返回false pFormRowSet -- DBFormRowSet对象 pFieldNames -- 校验的字段名称串,每个字符以"," 分割*/function g_FormFieldIsNull(pFormRowSet,pFieldNames){var flag = false;if(pFormRowSet == null || pFieldNames==null || pFieldNames==""){alert(g_I18NMessage("appframe_core","commutil_param_null"));return flag;}    var fieldArray = pFieldNames.split(",");if(fieldArray!=null && fieldArray.length>0){  for (var i=0;i<fieldArray.length ;i++ )  {var fieldValue = pFormRowSet.getValue(fieldArray[i]);if(fieldValue!=null && g_StringTrim(fieldValue)==""){  var fieldText = pFormRowSet.getTitle(fieldArray[i]);  alert(fieldText+g_I18NMessage("appframe_core","commutil_cannot_null"));  flag = true;  break;}  }}    return flag;} /********************************************************************************** FUNCTION: g_GetObjXY 获取页面中某个元素的绝对座标* PARAMETER: obj,dhtml 对象* RETURNS: array,array['x']=xpos,array['y']=ypos*********************************************************************************/function g_GetObjXY(Obj) { for(var sumTop=0,sumLeft=0;Obj!=document.body;sumTop+=Obj.offsetTop,sumLeft+=Obj.offsetLeft,Obj=Obj.offsetParent);return {left:sumLeft,top:sumTop}; } /********************************************************************************** FUNCTION: g_IsEmail 判断合法的email地址* PARAMETER: String (Email Address)* RETURNS: TRUE if the String is a valid Email address* FALSE if the passed string is not a valid Email Address* EMAIL FORMAT: AnyName@EmailServer e.g; webmaster@hotmail.com* @ sign can appear only once in the email address.*********************************************************************************/function g_IsEmail (theStr) {if(theStr==null || theStr=='')return true;var atIndex = theStr.indexOf('@');var dotIndex = theStr.indexOf('.', atIndex);var flag = true;theSub = theStr.substring(0, dotIndex+1)if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length)){ return(false); }else { return(true); }}/********************************************************************************** FUNCTION: g_IsDigit 校验是否全由数字组成* PARAMETER: 字符串s* RETURNS: true/false*********************************************************************************/function g_IsDigit(s){ if(s==null) return false; if(s=='')return true; s=''+s; if(s.substring(0,1)=='-' && s.length>1)s=s.substring(1,s.length);var patrn=/^[0-9]*$/;if (!patrn.exec(s)) return false;return true}/********************************************************************************** FUNCTION: g_IsFloat 校验是否是小数* PARAMETER: 字符串s.pDecimal精度(保留多少位小数 值为0或者-1时不限制精度)* RETURNS: true/false*********************************************************************************/function g_IsFloat(s,pDecimal){ if(s==null) return false; s=''+s; if(s=='')return true;  if(s.substring(0,1)=='-' && s.length>1)s=s.substring(1,s.length); var dec = -1; if(parseInt(pDecimal)!=NaN)   dec = pDecimal; var reg = "^[0-9]+(\\.[0-9]{1,"+dec+"})?$"; if(dec==0 || dec==-1) {   reg = "^[0-9]+(\\.[0-9]{1,10000})?$"; } var re = new RegExp(reg,"g"); if(!s.match(re)) return false; else return true;}/********************************************************************************** FUNCTION: g_IsTeleNumber 校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”* PARAMETER: 字符串s* RETURNS: true/false*********************************************************************************/function g_IsTeleNumber_bak(s){if(s==null || s=='')return true;if(s.length>20)return false;var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;if (!patrn.exec(s)) return falsereturn true}function g_IsTeleNumber(s){if(s==null || s=='')return true;if(s.length>20 || s.length<4)return false;var re = new RegExp(/^[\d'('')'' '\*\-]*$/);if(re.exec(s))return true;else return false;}/********************************************************************************** FUNCTION: g_IsMobileNumber 校验手机号码:必须以数字开头,除数字外,可含有“-”* PARAMETER: 字符串s* RETURNS: true/false*********************************************************************************/function g_IsMobileNumber_bak(s){var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;if (!patrn.exec(s)) return falsereturn true}//新的手机号码验证,以1打头,11位数字function g_IsMobileNumber(s){if(s==null || s=='')return true;if( s.length!=11 || ( s.substring(0,2)!='13' && s.substring(0,2)!='15'))return false;if(!g_IsDigit(s))return false;return true}/********************************************************************************** FUNCTION: g_IsPostalCode 校验邮政编码 6位数字* PARAMETER: 字符串s* RETURNS: true/false*********************************************************************************///function g_IsPostalCode(s){if(s==null || s=='')return true;var patrn=/^[0-9]{6}$/;if (!patrn.exec(s)) return falsereturn true}/********************************************************************************** FUNCTION: g_IsDate 校验日期是否合法yyyy-mm-dd这种格式的日期* PARAMETER: 字符串s* RETURNS: true/false*********************************************************************************/function g_IsDate(str){if(str=='')return true;   if(DATE_SEPARATOR==null) DATE_SEPARATOR ="-";   var regExpStr = "^\\d{4}" + DATE_SEPARATOR + "\\d{1,2}" + DATE_SEPARATOR + "\\d{1,2}$";   var patrn = new RegExp(regExpStr);   if(!patrn.exec(str)) return false;   var dateArray  = str.split(DATE_SEPARATOR);   var d= new Date(dateArray[0],dateArray[1]-1,dateArray[2]);   var issame =(d && (d.getFullYear()==dateArray[0])&& (d.getMonth()+1==dateArray[1]) &&(d.getDate()==dateArray[2]));   if (!issame)       { return false;       }   return true;}/********************************************************************************** FUNCTION: g_IsDateTime 校验日期是否合法yyyy-mm-dd H24:MI:SS这种格式的日期+时间* PARAMETER: 字符串s* RETURNS: true/false*********************************************************************************/function g_IsDateTime(str){if(str=='')return true;   if(DATE_SEPARATOR==null) DATE_SEPARATOR ="-";   var regExpStr = "^\\d{4}" + DATE_SEPARATOR + "\\d{1,2}" + DATE_SEPARATOR + "\\d{1,2}\\s\\d{2}:\\d{1,2}:\\d{1,2}$";   var patrn = new RegExp(regExpStr);   if(!patrn.exec(str)) return false;   var dateTimeArray = str.split(" ");   if(dateTimeArray==null || dateTimeArray.length!=2) return false;   var dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);   var timeArray = dateTimeArray[1].split(":");   var d= new Date(dateArray[0],dateArray[1]-1,dateArray[2],timeArray[0],timeArray[1],timeArray[2]);   var issame =(d && (d.getFullYear()==dateArray[0])&& (d.getMonth()+1==dateArray[1]) &&(d.getDate()==dateArray[2]) && (d.getHours() == timeArray[0]) && (d.getMinutes()== timeArray[1]) && (d.getSeconds()== timeArray[2])  );   if (!issame)       { return false;       }   return true;}/********************************************************************************** FUNCTION: 获取字符串的长度,如果字符串中包括中文等双字节代码,则其长度算为2。* PARAMETER: 字符串s* RETURNS: int*********************************************************************************/function g_GetStrLen(str){  str = str.toString(10);  return str.replace(/[^\x00-\xff]/g,"aa").length;}/********************************************************************************** FUNCTION: 获取子字符串,参数长度为字节长度* PARAMETER: str字符串,length获取长度,已字节为单位,如双字节,按照2处理,子串取ground* RETURNS: int*********************************************************************************/function g_getSubStrInByte(str,lenth){  str = str.toString(10);  var tmpstr= str.replace(/[^\x00-\xff]/g,"\x0b\x0c");tmpstr =tmpstr.substring(0,lenth);tmpstr = tmpstr.replace(/\x0b/g,'');return str.substring(0,tmpstr.length);}/********************************************************************************** FUNCTION: 字符串trim方法,取消到前后的空格* PARAMETER: 字符串s* RETURNS: string字符串*********************************************************************************/function g_StringTrim(str){  str = str.toString(10);  return str.replace(/(^\s*)|(\s*$)/g, "");}/********************************************************************************** FUNCTION: 请求数据库获取数据库的日期和时间* PARAMETER: null* RETURNS: string字符串*********************************************************************************/function g_GetSysDateTime(){     var _gNode = null;     var xml= new ActiveXObject("Msxml.DOMDocument");     xml.async = false;     var url=  _gModuleName+ "/business/com.ai.appframe2.web.DefaultAction?action=getSysDateTime";     var b = xml.load(url);     if(!b){    alert(g_I18NMessage("appframe_core","commutil_gettime_err"));return null;  }      var xmlNode = xml.documentElement;      var ud = createUserDataClass(xmlNode,true);      return ud.getValueByName("DateTime");}/********************************************************************************** FUNCTION: 请求数据库获取数据库日期* PARAMETER: null* RETURNS: string字符串*********************************************************************************/function g_GetSysDate(){   var dateTime = g_GetSysDateTime();   var date = null;   if(dateTime!=null && dateTime.indexOf(' ')!=null){   date = dateTime.substring(0,dateTime.indexOf(' '));}  return date;}/********************************************************************************** FUNCTION: 请求数据库获取数据库的时间* PARAMETER: null* RETURNS: string字符串*********************************************************************************/function g_GetSysTime(){   var dateTime = g_GetSysDateTime();   var time = null;   if(dateTime!=null && dateTime.indexOf(' ')!=null){   time = dateTime.substring(dateTime.indexOf(' ')+1,dateTime.length);}  return time;}/********************************************************************************** FUNCTION: 控制只能输入数字和回车* PARAMETER: null* RETURNS: null*********************************************************************************/function g_CheckInputNum(obj){  var keyCode = event.keyCode;  if(keyCode==8)return;  if(keyCode==46)return;  if(keyCode==35)return;  if(keyCode==36)return;  if(keyCode==37)return;  if(keyCode==39)return;  if(event.keyCode==13)return;  //支持ctrl + a、v、x、c  if(event.ctrlKey && (keyCode==65 || keyCode==67    ||keyCode==86 || keyCode==88)){    if(keyCode==86){      var str = window.clipboardData.getData('text');      if(str!=null){        str = str.replace(/[^\d\n]/g,'');        str = str.replace(/[\n]+/g,'\n');        window.clipboardData.setData('Text',str);      }    }    return;  }  if(48>event.keyCode || (event.keyCode > 57 && event.keyCode < 96)     || event.keyCode >105 ){    event.returnValue=false;  }  //对微软输入法的特殊限制  if(keyCode ==229 && obj !=null){    obj.disabled = true;    obj.disabled = false;    obj.focus();    obj.value = obj.value.replace(/[^\d]/g,'');  }}/********************************************************************************** FUNCTION: 控制只能输入数字或字母等* 允许的字母如下:"0123456789-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "* PARAMETER: null* RETURNS: null*********************************************************************************/function g_CheckInputEnglish(obj){  var keyCode = event.keyCode;  if(keyCode==8)return;  if(keyCode==46)return;  if(keyCode==35)return;  if(keyCode==36)return;  if(keyCode==37)return;  if(keyCode==39)return;  if(event.keyCode==13)return;  //支持ctrl + a、v、x、c  if(event.ctrlKey && (keyCode==65 || keyCode==67    ||keyCode==86 || keyCode==88)){    //    if(keyCode==86){      var str = window.clipboardData.getData('text');      if(str!=null){        str = str.replace(/[\W]/g,'');        window.clipboardData.setData('Text',str);      }    }    return;  }  var checkOK = "0123456789-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";  var str = String.fromCharCode(keyCode);  if(checkOK.indexOf(str)<0 ){    event.returnValue=false;  }  //对微软输入法的特殊限制  if(keyCode ==229 && obj !=null){    obj.disabled = true;    obj.disabled = false;    obj.focus();    obj.value = obj.value.replace(/[\W]/g,'')  }}//判断是否是身份证号码function g_IDCardNumber(value){  if(value=='' || value==null)return true;  var length = value.length;  if(length ==15){    if(!g_IsDigit(value) || value.substring(0,1)=='-'){      return false;    }    return true;  }else if(length ==18){    //前17位必须是数字    for (i= 0; i < 17;  i++){      code = value.charCodeAt(i);      if(code<48 || code>57)return false;    }    //18位身份证号码的最后一位可以是数字或英文字母    code = value.charCodeAt(17);    if(code>=48 && code<=57 || code>=65 && code<=90 || code>=97 && code<=122){      return true;    }  }  //位数不为15或者18则返回  return false;}//判断日期大小,输入两个日期字符串,返回两个日期的大小// 0一样大 ,1 第一日期大 ,-1 第二个日期大,-2错误function g_CompareDate(date_str1 ,date_str2){  if(date_str1 ==null)date_str1='';  if(date_str2==null ) date_str2='';  if(date_str1 ==date_str2)return 0;  if( !g_IsDateTime(date_str1) && !g_IsDate(date_str1)      || !g_IsDateTime(date_str2) && !g_IsDate(date_str2) ){    alert(g_I18NMessage("appframe_core","commutil_comparedate_err"));    return -2;  }  if(date_str1 =='' && date_str2 !='') return -1;  if(date_str2 =='' && date_str1 !='')return 1;  var hour =0;  var min =0;  var sec =0;  var dateTimeArray = date_str1.split(" ");  var dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);  if(dateTimeArray.length>1){    var timeArray = dateTimeArray[1].split(":");    hour = timeArray[0];    min = timeArray[1]    sec = timeArray[2]  }  var d1= new Date(dateArray[0],dateArray[1]-1,dateArray[2],hour ,min ,sec);  hour =0;  min =0;  sec =0;  dateTimeArray = date_str2.split(" ");  dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);  if(dateTimeArray.length>1){    var timeArray = dateTimeArray[1].split(":");    hour = timeArray[0];    min = timeArray[1]    sec = timeArray[2]  }  var d2= new Date(dateArray[0],dateArray[1]-1,dateArray[2],hour ,min ,sec);  if (d1.getTime()==d2.getTime()) return 0;  if(d1.getTime()>d2.getTime())return 1;  else return -1;}/**判断月份差,输入两个日期字符串,返回两个月份差如果输入的是非法值,抛出异常(year1-year2)*12+(month1-month2)add by yangbb*/function g_MonthsBetween(date_str1 ,date_str2){if(date_str1 ==null){date_str1='';}    if(date_str2==null ){    date_str2='';    }    if(date_str1 ==date_str2){    return 0;}    if( !g_IsDateTime(date_str1) && !g_IsDate(date_str1)|| !g_IsDateTime(date_str2) && !g_IsDate(date_str2) ){    alert(g_I18NMessage("appframe_core","commutil_comparedate_err"));    //抛出异常    throw new Error(g_I18NMessage("appframe_core","commutil_not_date"));  }//解析时间字符串var year1 =0;    var month1 =0;    var day1 =0;var dateTimeArray = date_str1.split(" ");  var dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);  year1=dateArray[0];  month1=dateArray[1];  day1=dateArray[2];    var year2 =0;    var month2 =0;    var day2 =0;  dateTimeArray = date_str2.split(" ");  dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);  year2=dateArray[0];  month2=dateArray[1];  day2=dateArray[2];  return (year1-year2)*12+(month1-month2);}//校验密码是否合法 ,8位非空字母 ,包含数字和字母function checkPSWFormatValid(psw){  if(psw==null || psw.length<8){    alert(g_I18NMessage("appframe_core","commutil_pwd_len"));    return false;  }  if(psw.indexOf(' ')>-1 || psw.indexOf('&')>-1){    alert(g_I18NMessage("appframe_core","commutil_pwd_black"));    return false;  }  var bNumber = false;//判断密码是否含有数字  var bAlphe = false; //判断是否含有英文字母  for (i = 0;  i < psw.length;  i++){      //如果含有英文字母和数字,则返回true      if(bNumber && bAlphe ){        return true;      }      code = psw.charCodeAt(i);      //判断是否包含数字      if(!bNumber){        if(code>=48 && code<=57){           bNumber = true;           continue;        }      }      //判断是否包含英文字母      if(!bAlphe){        if(code>=65 && code<=90 || code>=97 && code<=122){           bAlphe = true;        }      }   }   if(bNumber && bAlphe ){        return true;   }   alert(g_I18NMessage("appframe_core","commutil_pwd_all"));   return false;}/********************************************************************************** FUNCTION: 格式化日期时间方法* PARAMETER: aDate:js中的aDate对象,format-格式字符串.如:yyyy-MM-dd hh:mm:ss* RETURNS: 格式后的日期时间字符串* AUTHOR:ZLH*********************************************************************************/function g_FormatDate(aDate,format)  {    var o = {    "M+" : aDate.getMonth()+1, //month    "d+" : aDate.getDate(),    //day    "h+" : aDate.getHours(),   //hour    "m+" : aDate.getMinutes(), //minute    "s+" : aDate.getSeconds(), //second    "q+" : Math.floor((aDate.getMonth()+3)/3),  //quarter    "S" : aDate.getMilliseconds() //millisecond    }    if(/(y+)/.test(format)) format=format.replace(RegExp.$1,    (aDate.getFullYear()+"").substr(4 - RegExp.$1.length));    for(var k in o)if(new RegExp("("+ k +")").test(format))    format = format.replace(RegExp.$1,    RegExp.$1.length==1 ? o[k] :    ("00"+ o[k]).substr((""+ o[k]).length));    return format;  }/********************************************************************************** FUNCTION: 粘贴时控制只能贴入数字和回车* PARAMETER: null* RETURNS: null*********************************************************************************/function g_BeforePasteNum(){  var str = window.clipboardData.getData('text');  if(str!=null){    str = str.replace(/[^\d\n]/g,'');    str = str.replace(/[\n]+/g,'\n');    str = str.replace(/(^\s*)|(\s*$)/g, "");    window.clipboardData.setData('Text',str);  }}/********************************************************************************** FUNCTION: 粘贴时控制只能贴入数字和字母* PARAMETER: null* RETURNS: null*********************************************************************************/function g_BeforePasteEnglish(){  var str = window.clipboardData.getData('text');  if(str!=null){    str = str.replace(/[\W]/g,'');    window.clipboardData.setData('Text',str);  }}

原创粉丝点击