读书人

js学习之道:表单印证公共js

发布时间: 2013-10-13 14:03:53 作者: rapoo

js学习之道:表单验证公共js

  • /** 文件名称: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-dd g_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 false return 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 false return 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 false
  • return 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); }
  • }

  • 读书人网 >JavaScript

    热点推荐