JavaScript验证类

// JavaScript Document


//用法如:
< input  name ="SetinPiece"  type ="text"  id ="SetinPiece"  size ="20"  charset ="Number"  datatype ="Number"  nullable ="false" >


//初始化调用
//先提示画层
drawTipDiv();
//输出样式表
drawStyle();
//装载侦听器
addListener();
//容错处理
function killErrors() {
return true;
}
//window.onerror = killErrors;
//================以下为系统函数区=======================//
//全局变量区
var oldInputStyle;
var oldImgStyle;
var firstInput;
var endInput;
var timer;

//显示提示信息层
function showTip(handle,msg) {
    //alert(handle.type);
    handle.focus();    
 var pos = getPosition(handle);
 var t = pos.top;
 var l = pos.left;
 document.all.checkMsgDiv.style.left=l-10+getTextLength(handle);
    document.all.checkMsgDiv.style.top=t+handle.clientHeight;
    document.all.checkMsgTd.innerHTML=msg;
 document.all.checkMsgDiv.style.visibility = 'visible';
 //隐藏被层遮挡的选择框
 HideOverSels("checkMsgDiv");
 timer = setTimeout("hideTip();", 2500);
 return false;
}

//表单校验函数
function checkFormInput(handle) {
  var controlList = handle.elements;
  var controlObj;
  for(var i=0;i
< controlList .length;i++) {
   //如果是text控件,需要进行数据校验
   controlObj 
= controlList[i];
   
if(isControlVisible(controlObj)) {
    if(controlObj.type
=='text'  || controlObj.type =='password')  {
     //如果不充许为空,则需要判断
           if((controlObj.nullable
=="false")  && (controlObj.value ==""))  {
    hideTip();
    showTip(controlObj,"此输入域不能为空!");
    return false;
     }
     //如果有最小长度限制,则需要判断
     if(controlObj.value!
=''  && controlObj.minlength! =null)  {
     var realLength 
= controlObj.value.length;
     
var needLength  = controlObj.minlength;
              
if(realLength<needLength) {
                 hideTip();
     showTip(controlObj,"此输入域至少需要"+needLength+"个字符!");
     return false;
     }
     }
     //判断数据的类型,调用相关的数据校验函数
     if(controlObj.datatype!
=null  && controlObj.value! ='')  {
          var typeStr 
= controlObj.datatype.toLowerCase();
          
var firstChar  = typeStr.substring(0,1);
          
firstChar  = firstChar.toUpperCase();
          
typeStr  = firstChar+typeStr.substring(1,typeStr.length);
          
var tempMsg =eval("is"+typeStr+"(controlObj);");
          
if (tempMsg! =true)
          
{
       hideTip();
          showTip(controlObj,"此输入域"+tempMsg);
       return false;
          }
     }
    }
   }
  }
  return true;
}

//系统调用接口
function handleKeyDown(event) {
  //有按键就要关闭tip层
  hideTip();
  //home键与end键定位第一个与最后一个输入域上
  if(event.srcElement.type!
="text"  && event.srcElement.type! ="textarea"  && event.keyCode ==36)  {
   if(firstInput) firstInput.focus();
  }
  if(event.srcElement.type!
="text"  && event.srcElement.type! ="textarea"  && event.keyCode ==35)  {
   if(endInput) endInput.focus();
  }
  //处理回车切换焦点以及按钮与图片执行功能
  if(event.keyCode
==13  && event.srcElement.type! ="button"  && event.srcElement.type! ="reset"  && event.srcElement.type! =""  && event.srcElement.type! ="textarea" ) {
   if(event.srcElement.src) {
    if(event.srcElement.onclick) {
    event.srcElement.fireEvent("onclick")
    return;
    } else {
    event.keyCode
=9;
    
return;
    }
   } else {
    event.keyCode
=9;
    
return;
   }
  }

  //处理图片按钮的快捷键
  if(event.altKey && event.keyCode!
=18)  {
   var shortKey
=String.fromCharCode(event.keyCode);
   
var quickKey  = "" ;
      for(var i
=0;i<document.images.length;i++)  {
          quickKey 
= document.images[i].accessKey;
          
quickKey  = quickKey.toUpperCase();
    
if(quickKey ==shortKey)  {
     if(document.images[i].onclick) {
         document.images[i].fireEvent("onclick");
         break;
     }
    }
   }
   //处理输入对象快捷方式
   var inputList 
= document.body.getElementsByTagName("INPUT");
      
for(var i =0;i<inputList.length;i++)  {
        quickKey 
= inputList[i].accessKey;
        
quickKey  = quickKey.toUpperCase();
  
if(quickKey ==shortKey)  {
    inputList[i].focus();
        break;
  }
      }
   return;
  }
  if(event.srcElement.type
=='text'  && event.srcElement.charset! =null)  {
    //alert(event.srcElement.charset);
 if((event.keyCode
> 48 && event.keyCode < 112 ) || (event.keyCode > 127 && event.keyCode!=144))  checkInputChar(event.srcElement,event.keyCode);
  }
}

//有效性判断入口
function checkInputChar(handle,keyCode) {
    hideTip();
 var typeStr = handle.charset.toLowerCase();
 var firstChar = typeStr.substring(0,1);
 firstChar = firstChar.toUpperCase();
 typeStr = firstChar+typeStr.substring(1,typeStr.length);
 var tempMsg=eval("input"+typeStr+"(handle,keyCode);");
 if (tempMsg!=true)
 {
  hideTip();
  showTip(handle,tempMsg);
 }
}

//关闭提示信息层
function hideTip() {
  document.all.checkMsgDiv.style.visibility = 'hidden';
  //显示被隐藏了的选择框
  ShowOverSels("checkMsgDiv");
  clearTimeout(timer);
}

//获得文本框中文本的象素单位的宽度
function getTextLength(handle)
{
    var range = handle.createTextRange();
    return range.boundingWidth;
    //return 0;
}

//画一个隐藏的层
function drawTipDiv() {
  document.write("
< div  id ="checkMsgDiv"   style ="position:absolute;  width:218px; overflow: visible; z-index:1; visibility:hidden; left: 100px; top: 69px; height: 66px; border: 1px none #000000;" >  ");
  document.write("  
< table  width ="218"  height ="65"  border ="0"  cellpadding ="0"  cellspacing ="0"   id ="checkMsgTable" > ");
  document.write("    
< tr >  ");
  document.write("      
< td  height ="13"  valign ="top" >< img  src ="REDRULE.GIF"  width ="192"  height ="7" ></ td > ");
  document.write("    
</ tr > ");
  document.write("    
< tr >  ");
  document.write("      
< td  height ="42"  valign ="top"  background ="/platform/js/t_bg.gif" > ");
  document.write("  
< table  width ="95%"  border ="0"  align ="center"  cellpadding ="0"  cellspacing ="0"  style ="font:9pt  宋体;" > ");
  document.write("          
< tr > ");
  document.write("            
< td  id ="checkMsgTd" > sdafs  </ td > ");
  document.write("          
</ tr > ");
  document.write("        
</ table ></ td > ");
  document.write("    
</ tr > ");
  document.write("    
< tr > ");
  document.write("      
< td  height ="10"  valign ="bottom" >< img  src ="REDRULE.GIF"  width ="192"  height ="7" ></ td > ");
  document.write("    
</ tr > ");
  document.write("  
</ table > ");
  document.write("
</ div > ");
}

//输出样式表
function drawStyle() {
  document.write("
< style  type ="text/css" > ");
  document.write("input.activeInput
{ border-top-color : #0000CC ; border-top-width : 1px ; border-bottom-color : #0000CC ; border-bottom-width : 1px ; border-left-color : #0000CC ; border-left-width : 1px ; border-right-color : #0000CC ; border-right-width : 1px ; } ");
  document.write("img.activeImg
{ border-top-color : #3366FF ; border-top-width : 1px ; border-bottom-color : #3366FF ; border-bottom-width : 1px ; border-left-color : #3366FF ; border-left-width : 1px ; border-right-color : #3366FF ; border-right-width : 1px ; } ");
  document.write("
</ style > ");
}

//控件onFocus事件的侦听器
function onInputFocus() {
  if(window.event.srcElement.src) {
 if(window.event.srcElement.onclick) {
 oldImgStyle = window.event.srcElement.style;
    window.event.srcElement.className="activeImg";
 }
  } else {
 oldInputStyle = window.event.srcElement.style;
 window.event.srcElement.className="activeInput";
 if(window.event.srcElement.select) window.event.srcElement.select();
  }
}

//控件onblur事件的侦听器
function onInputBlur() {
  if(window.event.srcElement.src) {
    window.event.srcElement.className = "";
  } else {
    window.event.srcElement.className = "";
  }
}

//控件onkeypress事件的侦听器
function onInputKeydown () {
  handleKeyDown(window.event);
}

//控件onPaste事件的侦听器
function onInputPaste () {
 return false;
}

//表单onSubmit事件的侦听器
function onFormSubmit () {
  return checkFormInput(window.event.srcElement);
}

//控件onMouseover事件的侦听器
function onInputMouseover () {
  onInputFocus();  
}

//控年onMouseout事件的侦听器
function onInputMouseout () {
  onInputBlur();
}

//为每个可输入控件装载侦听器
function addListener() {
 var inputList = document.body.getElementsByTagName("INPUT");
 if(inputList[0]) firstInput = inputList[0];
    for(var i=0;i
< inputList .length;i++) {
   inputList[i].attachEvent ('onkeydown', onInputKeydown);
   inputList[i].attachEvent ('onfocus', onInputFocus);
   inputList[i].attachEvent ('onblur', onInputBlur);
   //inputList[i].attachEvent ('onpaste', onInputPaste);
   inputList[i].attachEvent ('onmouseover', onInputMouseover);
   inputList[i].attachEvent ('onmouseout', onInputMouseout);
   }
   if(inputList[i-1]) endInput 
= inputList[i-1];
   
var inputList  = document.body.getElementsByTagName("IMG");
   
for(var i =0;i<inputList.length;i++)  {
   inputList[i].attachEvent ('onkeydown', onInputKeydown);
   inputList[i].attachEvent ('onfocus', onInputFocus);
   inputList[i].attachEvent ('onblur', onInputBlur);
   }
   document.body.attachEvent('onkeydown', onInputKeydown);

   var formList 
= document.body.getElementsByTagName("FORM");
   
for(var i =0;i<formList.length;i++)  {
   formList[i].attachEvent ('onsubmit',onFormSubmit);
   }
}

// 隐藏被ID为objID的对象(层)遮挡的所有select
function HideOverSels(objID)
{
    var sels 
= document.getElementsByTagName('select');
    
for (var i  = 0;  i < sels.length; i++)
      if (Obj1OverObj2(document.all[objID], sels[i]))
        sels[i].style.visibility 
= 'hidden';
}

// 显示被ID为objID的对象(层)遮挡的所有select
function ShowOverSels(objID)
{
    var sels 
= document.getElementsByTagName('select');
    
for (var i  = 0;  i < sels.length; i++)
      if (Obj1OverObj2(document.all[objID], sels[i]))
        sels[i].style.visibility 
= 'visible';
}

//判断obj1是否遮挡了obj2
function Obj1OverObj2(obj1, obj2)
{
  var pos1 
= getPosition(obj1)
  
var pos2  = getPosition(obj2)
  
var result  = true;
  
var obj1Left  = pos1.left  - window.document.body.scrollLeft;
  var obj1Top 
= pos1.top  - window.document.body.scrollTop;
  var obj1Right 
= obj1Left  + obj1.offsetWidth;
  var obj1Bottom 
= obj1Top  + obj1.offsetHeight;
  var obj2Left 
= pos2.left  - window.document.body.scrollLeft;
  var obj2Top 
= pos2.top  - window.document.body.scrollTop;
  var obj2Right 
= obj2Left  + obj2.offsetWidth;
  var obj2Bottom 
= obj2Top  + obj2.offsetHeight;
  if (obj1Right <
= obj2Left  || obj1Bottom < = obj2Top  ||
      obj1Left 
> = obj2Right || obj1Top >= obj2Bottom)
    result = false;
  return result;
}

// 获取对象的坐标
function getPosition(Obj)
{
    var sumTop=0;
    var sumLeft=0;    
    while(Obj!=window.document.body) {
      sumTop+=Obj.offsetTop;
      if(Obj.tagName.toLowerCase()=='div') {
        sumTop-=Obj.scrollTop;
      }
      sumLeft+=Obj.offsetLeft;
      Obj=Obj.offsetParent;
    }
 return {left:sumLeft,top:sumTop}
}

//判断控件的可见性
function isControlVisible(handle) {
  var retValue = true;
  while(handle.tagName.toLowerCase()!='form' && handle.style.display.toLowerCase()!='none') {
    handle = handle.parentElement;
  }
  if(handle.style.display=='none') retValue = false;
  return retValue;
}

//================以上为系统函数区=======================//

//以下为输入过程中输入内容即时验证函数

//必需输入数字或小数点.
function inputNumberchar(handle,keyCode) {
  if(!( (keyCode>=48&
&keyCode < =57 )||(keyCode > =96& &keyCode < =105 ) || (keyCode  ==  190) )) {
 window.event.returnValue
=false;
 
return "必须输入数字或小数点!<br > 即如下字符:1234567890.";
  } else return true;
}

//必须输入是数字
function inputNumber(handle,keyCode) {
  if(!((keyCode>=48&
&keyCode < =57 )||(keyCode > =96& &keyCode < =105 ))) {
 window.event.returnValue
=false;
 
return "必须输入数字!即如下字符:<br > 1234567890";
  } else return true;
}
//必须输入字母
function inputLetter(handle,keyCode) {
  if(!((keyCode>=97&
&keyCode < =122 )||(keyCode > =65& &keyCode < =90 ))) {
 window.event.returnValue
=false;
 
return "必须输入大小写字母!即如下字符:<br > abcdefghijklmnopqrstuvwxyz < br > ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  } else return true;
}
//必须输入所有可见字符
function inputVisible(handle,keyCode) {
 var pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.@>
< ,- []{}?/+ =|/'":;~!#$%()`";
 
var keyValue =String.fromCharCode(keyCode);
 
if(keyCode ==190)  keyValue  = "." ;
 if(keyCode
==189)  keyValue  = "-" ;
 if(keyCode
==188)  keyValue  = "<" ;
 if(keyCode
==219)  keyValue  = "[" ;
 if(keyCode
==221)  keyValue  = "]" ;
 if(keyCode
==191)  keyValue  = "?" ;
 if(keyCode
==187)  keyValue  = "+" ;
 if(keyCode
==220)  keyValue  = "|" ;
 if(keyCode
==222)  keyValue  = "'" ;
 if(keyCode
==186)  keyValue  = ";" ;
 if(keyCode
==192)  keyValue  = "~" ;
 if(pattern.indexOf(keyValue)!
=-1)  {
  window.event.returnValue
=true;
  
return true;
 }else{
  window.event.returnValue
=false;
  
return "必须输入可见字符!即如下字符:<br > ABCDEFGHIJKLMNOPQRSTUVWXYZ < br > abcdefghijklmnopqrstuvwxyz < br > 0123456789.@> < ,- []{}?/+ =|/'":<br > ;~!#$%()`";
 }
}
//必须输入字母与数字
function inputNormal(handle,keyCode) {
 var pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 var keyValue=String.fromCharCode(keyCode);
 if(pattern.indexOf(keyValue)!=-1) {
  window.event.returnValue=true;
  return true;
 }else{
  window.event.returnValue=false;
  return "必须输入可见字符!即如下字符:
< br > ABCDEFGHIJKLMNOPQRSTUVWXYZ < br > abcdefghijklmnopqrstuvwxyz < br > 0123456789";
 }
}

//================以下为校验函数区=======================//
//函数名说明:is+TypeName,TypeName首字母大写
//参数handle为当前控件句柄
//参数keyCode为当前按钮的值
//返回说明:通过返回"",不通过返回不通过的原因描述
/*格式支持例表
格式字符           格式描述       格式说明
Number             数字型
Userid             用户ID
Username           用户名称
Enterprisename     企业单位名称
Loginname          登录名称
Cardnumber         证件号码
Address            地址
Phone              电话号码
Mobile             手机号码
Postcode           邮政编码
Email              电子邮件
Namesimplicity     姓名简拼
Password           密码
Namestr            名称字符串
DescStr            描述字符串
Pageurl            页面URL
Dirctory           磁盘路径
*/

//判断是否是数字
 function isNumber(handle){
  var pattern = /^(d){1,14}$/;
    if (!pattern.exec(handle.value)) return "必须输入数字!";
    return true;
 }
//判断是否是用户账号
 function isUserid(handle){
  var pattern = /^(d|w){3,14}$/;
    if (!pattern.exec(handle.value)) return "必须输入数字
< br > 且长度需大于等于3位 < br > 小于等于14位!";
    return true;
 }
//判断是否用户名称可以是字母也可以是中文
 function isUsername(handle){
  var pattern = /^[a-zA-Z一-龥]{2,50}$/;
    if (!pattern.exec(handle.value)) return "必须是中文字母或者数字
< br > 且长度需大于等于2位 < br > 小于等于50位!"
    return true;
    }
//判断是否是企业名称:可以是字母 数字 中文 - _
    function isEnterprisename(handle){
        var pattern = /^[a-zA-Z0-9-_一-龥]{2,200}$/;
        if (!pattern.exec(handle.value)) return "必须是中文字母或者数字
< br > 且长度需大于等于2位 < br > 小于等于200位!";
        return true;
    }
//判断是否是登录名称
    function isLoginname(handle){
        var pattern = /^([a-z]|[A-Z]|[0-9]){2,25}$/;
        if (!pattern.exec(handle.value)) return "必须是字母或者数字
< br > 且长度需大于等于2位 < br > 小于等于25位!";
        return true;
 }
//判断是否是证件号码
 function isCardnumber(handle){
   var pattern;
  pattern = /^(d){5,18}$/;
   if (!pattern.exec(handle.value)) return "必须是数字
< br > 且长度需大于等于5位 < br > 小于等于18位!";
   return true;
 }
//地址
 function isAddress(handle){
  var pattern = /^[a-zA-Z0-9一-龥]{2,200}$/;
    if (!pattern.exec(handle.value)) return "必须是中文字母或者数字
< br > 且长度需大于等于2位 < br > 小于等于200位!";
    return true;
 }
//联系电话
 function isPhone(handle){
  var pattern = /^(d){6,30}$/;
    if (!pattern.exec(handle.value)) return "必须是数字
< br > 且长度需大于等于6位 < br > 小于等于30位!";
    return true;
 }
//手机
 function isMobile(handle){
  var pattern = /^[1][3](d){9}$/;
    if (!pattern.exec(handle.value)) return "必须是数字
< br > 且首两位是13长度是11位!";
    return true;
 }
//邮编
 function isPostcode(handle){
  var pattern = /^(d){6}$/;
    if (!pattern.exec(handle.value)) return "必须是数字
< br > 且长度需是6位!";
    return true;
 }
//email
 function isEmail(handle){
  var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
    if (!pattern.exec(handle.value)) return "必须符合电子邮件地址格式";
    return true;
 }
//简拼
 function isNamesimplicity(handle){
  var pattern = /^([a-zA-Z]){2,25}$/;
    if (!pattern.exec(handle.value)) return "必须是字母
< br > 且长度需大于等于2位 < br > 小于等于25位!";
    return true;
 }
//密码
 function isPassword(handle){
  var pattern = /^([a-zA-Z]|[0-9]){2,25}$/;
    if (!pattern.exec(handle.value)) return "必须是字母或者数字
< br > 且长度需大于等于2位 < br > 小于等于25位!";
    return true;
 }
//判断是否是名称:可以是字母 数字 中文 - _
    function isNamestr(handle){
        var pattern = /^[a-zA-Z0-9-_一-龥]{1,40}$/;
        if (!pattern.exec(handle.value)) return "必须是中文,字母,或者数字,_-
< br > 且长度需大于等于1位 < br > 小于等于40位!";
        return true;
    }
//判断是否是描述信息:可以是字母 数字 中文 - _ , .
    function isDescstr(handle){
        var pattern = /^[a-zA-Z0-9-_,.一-龥]{1,50}$/;
        if (!pattern.exec(handle.value)) return "必须是中文字母或者数字
< br > 且长度需大于等于1位 < br > 小于等于50位!";
        return true;
    }
 
//
    function isNumberchar(handle){
  var pattern = /^[0-9.]{1,50}$/;
  if(!pattern.exec(handle.value)) return "必须是数字或者小数点!";
  return true ;
 }

//页面URL
    function isPageurl(handle){
        var pattern = /^[a-zA-Z0-9-_,./一-龥]{1,80}$/;
        if (!pattern.exec(handle.value)) return "必须是中文字母或者数字
< br > 且长度需大于等于1位 < br > 小于等于80位!";
        return true;
    }

//目录路径
    function isDirctoryurl(handle){
        var pattern = /^[a-zA-Z0-9-_,./u4E00-龥]{1,300}$/;
        if (!pattern.exec(handle.value)) return "必须是中文字母或者数字
< br > 且长度需大于等于1位 < br > 小于等于300位!";
        return true;
    }

//================以上为校验函数区=======================//

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值