javascript----------客户端检测

本文介绍了一种基于自定义属性的表单验证方法,通过添加特定属性到表单元素来实现不同类型的验证,包括长度、非空及数据类型检查等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

common.js---validate检测(只对 有自定义属性的控件进行检测)
/*
 func: 公共js
 description:
  在数据验证的 控件中
  对要进行验证的控件
  先添加 chname属性 如 chname="用户名"  如果出错 就显示 “用户名 出错”
 再添加 datatype 或者maxsize或者nullable="no"
  其他的具体验证方法 看   verifyinput
*/
/* 检测指定FORM表单所有应被检测的元素(那些具有自定义属性的元素)是否合法,此函数用于表单的  onsubmit="return verifyAll(this)"    事件 */
function verifyAll(myform)
 {  
var i;
 //alert('调用了verifyAll共'+myform.elements.length+'元素'); 
 for (i=0;i<myform.elements.length;i++)
 { 
     /* 非自定义属性的元素不予理睬 */
    if (myform.elements[i].chname+""=="undefined") continue;
  /* 校验当前元素 */
  if (verifyInput(myform.elements[i])==false)
  {
     myform.elements[i].focus();
   return false;
  }
  }
  return true;
}
/* 检测指定文本框输入是否合法 */
function verifyInput(input)

 var image;
 var i;
 var error = false;
 /* 长度校验 */
 if (strlen(input.value)>parseInt(input.maxsize))
 {
  alert(input.chname+"超出最大长度"+input.maxsize);
  error = true;
 }
 else
 /* 非空校验 */
 if (input.nullable=="no"&&isnull(input.value))
 {
  alert(input.chname+"不能为空");
  error = true;
 }
 else
 {
   /* 数据类型校验 */
  switch(input.datatype)
  {
    case "number": if (isnumber(input.value)==false)
       {
        alert(input.chname+"值应该全为数字");
        error = true;
       }
       alert('debug=>>调用了number');
       break;
      case "email": if (checkemail(input.value)==false && !isnull(input.value))
       {
        alert(input.chname+"正确格式为 abc@abc.com!");
        error = true;
       }
       break;
      case "date": if (IsDate(input.value,'-')==false && !isnull(input.value))
       {
        alert(input.chname+"日期格式应为2005-08-12 !");
        error = true;
       }
       break;
   /* 在这里可以添加多个自定义数据类型的校验判断 */
   /*  case datatype1: ... ; break;        */
   /*  case datatype2: ... ; break;        */
   /*  ....................................*/
   default  : break;
  }
 }
 /* 根据有无错误设置或取消警示标志
    在控件旁边 加个 "check_" 前缀 好让 用图片显示
 */
 if (error)
 {
  objcheck= document.getElementById("img_"+input.name);
  objcheck.innerHtml="http://www.d5jr.com/images/check_error.gif";
  return false;
 }
 else
 {
objcheck= document.getElementById("img_"+input.name);
  objcheck.innerHtml=" http://www.d5jr.com/images/check_space.gif";
  return true;
 }
}
/* 取得字符串的字节长度 */
function  strlen(str)
{
    
var i;
    
var len;
    
    len 
= 0;
    
for (i=0;i<str.length;i++)
    
{
        
if (str.charCodeAt(i)>255) len+=2else len++;
    }

    
return len;
}


/* 检测字符串是否为空 */
function  isnull(str)
{
    
var i;
    
    
for (i=0;i<str.length;i++)
    
{
        
if (str.charAt(i)!=' 'return false;
    }

    
return true;
}


/* 检测字符串是否全为数字 */
function  isnumber(str)
{
    
var number_chars = "1234567890";
    
var i;

    
for (i=0;i<str.length;i++)
    
{
        
if (number_chars.indexOf(str.charAt(i))==-1return false;
    }

    
return true;
}

function  checkemail(string) {
   
if(string.length!=0){
    
if (string.charAt(0)=="." || string.charAt(0)=="@"|| string.indexOf('@'0== -1 || string.indexOf('.'0== -1 || string.lastIndexOf("@")==string.length-1 || string.lastIndexOf("."==string.length-1)
     
{
      
//alert("Email地址的格式不正確!正确格式为abc@abc.com!!");
      return false;
      }

   }

   
else{
     
//alert("Email地址不能为空!");
     return false;
   }

   
return true;
}


function  IsDate(DateString , Dilimeter)
{
if (DateString==nullreturn false;
if (Dilimeter=='' || Dilimeter==null)
Dilimeter 
= '-';
var tempy='';
var tempm='';
var tempd='';
var tempArray;
if (DateString.length<8 && DateString.length>10)
return false
tempArray 
= DateString.split(Dilimeter);
if (tempArray.length!=3)
return false;
if (tempArray[0].length==4)
{
tempy 
= parseInt(tempArray[0],10);
tempd 
= parseInt(tempArray[2],10);
}

else
{
tempy 
= parseInt(tempArray[2],10);
tempd 
= parseInt(tempArray[1],10);
}

tempm 
= parseInt(tempArray[1],10);

var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';//加八小时是因为我们处于东八区
var tempDate = new Date(tDateString);
if (isNaN(tempDate))
return false;
if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1&& (tempDate.getDate()==parseInt(tempd)))
{
return true;
}

else
{
return false;
}

}


function  LTrim(s) {
        
for(var i=0;i < s.length;i++)
        
if(s.charAt(i)!=' ')
        
return s.substring(i,s.length);
        
return "";
}

function  RTrim(s) {
        
for(var i=s.length-1;i>=0;i--)
        
if(s.charAt(i)!=' ')
        
return s.substring(0,i+1);
        
return "";
}

function  Trim(s) {
        
return RTrim(LTrim(s));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值