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);
- }
- }
- /**
- 文件名称: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);
- }
- }
- /**
- 文件名称: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);
- }
- }
js学习之道:表单验证公共js的更多相关文章
- jquery.validate.js使用之自定义表单验证规则
jquery.validate.js使用之自定义表单验证规则,下面列出了一些常用的验证法规则 jquery.validate.js演示查看 jquery validate强大的jquery表单验证插件 ...
- JS组件系列——Form表单验证神器: BootstrapValidator
前言:做Web开发的我们,表单验证是再常见不过的需求了.友好的错误提示能增加用户体验.博主搜索bootstrap表单验证,搜到的结果大部分都是文中的主题:bootstrapvalidator.今天就来 ...
- js 策略模式 实现表单验证
策略模式 简单点说就是:实现目标的方式有很多种,你可以根据自己身情况选一个方法来实现目标. 所以至少有2个对象 . 一个是策略类,一个是环境类(上下文). 然后自己就可以根据上下文选择不同的策略来执 ...
- AngularJS学习笔记(二) 表单验证案例(ng-repeat/filter)
这一节相对来说需要理解的东西不是太多,记住了那些api就行了. 还是一个案例(同样来自miaov),一个表单验证,先上代码,然后再对对应的内容进行解释. <!DOCTYPE html> & ...
- Django学习笔记之表单验证
表单概述 HTML中的表单 单纯从前端的html来说,表单是用来提交数据给服务器的,不管后台的服务器用的是Django还是PHP语言还是其他语言.只要把input标签放在form标签中,然后再添加一个 ...
- JavaScript入门学习笔记(表单验证)
表单验证: 在数据被送到服务器之前对HTML表单中的输入数据进行验证,避免服务器频繁验证信息造成用户体验差. (1)表单数据是否为空 (2)输入的信息格式是否正确 (3)输入数据的类型是否正确 必填( ...
- js实现表单验证 常用JS表单验证
CSS代码 @charset "gb2312"; /* CSS Document */ body,dl,dt,dd,div,form {padding:;margin:;} #he ...
- 云平台项目--学习经验--BootstrapValidate表单验证插件
使用前提,需要加载jquery和bootstrap库.并且引入bootstrapValidator.js和bootstrapValidator.css文件然后建立一个form表单,添加表单控件,表单控 ...
- JS学习笔记7_表单脚本
1.获取表单及表单元素引用的方式 var mForm = document.forms[formName];获取表单引用 mForm.elements[elemName]获取表单元素,如有同名的,则得 ...
随机推荐
- 关于EF查询的性能
现象:前台grid发送ajax请求,通过谷歌devtool发现“waiting”时间高达23s(1500条数据);可见服务器端代码处理花费时间很长: 解决:分析代码,有两处代码注释掉后速度提升明显 / ...
- Windows下配置使用MemCached
工具: memcached-1.2.6-win32-bin.zip MemCached服务端程序(for win) Memcached Manager win下的Mem ...
- 【BZOJ】【3210】花神的浇花集会
曼哈顿距离与切比雪夫距离 QAQ蒟蒻并不知道切比雪夫距离是什么……并不会做这道题…… 去膜拜了PoPoQQQ大爷的题解: 题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与31 ...
- 【BZOJ】【3207】花神的嘲讽计划 I
字符串Hash+可持久化线段树 好神奇的转化…… 蒟蒻一开始还去想AC自动机去了……然而由于a[i]的范围是小于等于n,怎么也想不出一个时间复杂度合理的方法 膜拜了题解0.0原来是字符串Hash! 首 ...
- 【BZOJ】【1874】取石子游戏
SG函数 嗯博弈论入门题,关于SG函数这个东西可以去看VFK神犇的博客,讲的非常清楚Orz. 传送门:vfleaking.blog.163.com/blog/static/17480763420123 ...
- ActiveMQ主从配置
这种方式有个问题,activemq1有消息没消费完但是突然宕机,虽然程序会自动连到activemq2.但是activemq1的消息只有等机器恢复后才会被消费. 1.启动:我这里使用的是apache-a ...
- Understanding Convolution in Deep Learning
Understanding Convolution in Deep Learning Convolution is probably the most important concept in dee ...
- ios 获取n个月前或者n个月后的日期
NSCalendar *calendar = [NSCalendar currentCalendar]; NSRange range = [calendar rangeOfUnit:NSDayCale ...
- Codeforces Round #247 (Div. 2) C题
赛后想了想,然后就过了.. 赛后....... 我真的很弱啊!想那么多干嘛? 明明知道这题的原型就是求求排列数,这不就是 (F[N]-B[N]+100000007)%100000007: F[N]是1 ...
- Sqli-labs less 61
Less-61 此处对于id处理还是有点奇葩的,第一次遇到利用两层括号的.(可能我头发比较长,见识短了).形式和上述是一样的 payload: http://127.0.0.1/sqli-labs/L ...