人生无悔。为什么人到30才能不惑

工作工作思考思考学习学习 无悔的人生 快乐的生活 激情的工作

导航

我用一个asp表单验证的东西.

//示例:
//整数:<input type="text" name="test" vt="int" on="总载重吨" r="true" max="10000" min="100"><br><br>
//浮点数<input type="text" name="test" vt="float" on="运价" r="true" max="10000.50" decimalLen="2"><br><br>
//普通字符:<input type="text" name="test" vt="string" on="字符" r="true" mal="6" mil=3><br><br>
//英文名:<input type="text" name="test" vt="estring" on="英文船名" r="true" mal="6" mil=3><br><br>
//中文名:<input type="text" name="test" vt="cstring" on="英文船名" r="true" mal="6" mil=3><br><br>
//日期:<input type="text" name="test" vt="date" on="开始日期" r="true"><br><br>
//邮箱:<input type="text" name="test" vt="email" on="邮箱" r="true"><br><br>
//单选:<input type="radio" name="test" vt="radio" on="显示方式" r="true">
//复选项:<input type="checkbox" name="test" vt="checkbox" on="爱好" mis="2" mas="5" value='1' r='true'><input type="checkbox" name="test" value='5'><br><br>
//列表选顶:<select name="test1" vt="select" on="租船方式" r="true" size="1"><option>请选择</option></select><br><br>
//多选项:<select name="test2" vt="list" on="爱好" size =5 mis="2" mas="5" multiple><option>6</option></select><br><br>
//确认密码:<input vt="compare" to="t1" on='确认密码'>
//数字编号:vt=nuidck

function checkForm(formName)
{
 eval("var oForm=document."+formName);
 var eles = oForm.elements;

 for(var i=0;i<eles.length;i++)
 {
  //是否需要验证
  var sType=eles[i].vt;
  var str=new String(eles[i].value);
  if (!chksafe(str))
  { 
   alert("您输入的 "+convertNullToSpace(eles[i].on)+" 包含非法字符");
   eles[i].focus();
   return false;   
  }
 
 
  if(sType)
  {
   if(eles[i].r!=null && eles[i].r=="true" )
   {
   
    if(trim(eles[i].value)=="" && sType!="select")
    {
     if(eles[i].on!=null)
       {alert(eles[i].on+" 不可以为空");}    
     else
       {alert("该文本框为必输字段");}eles[i].focus();event.returnValue=false;return false;}
    }

   if (!(eles[i].r!="true" && trim(eles[i].value)==""))
     
   switch(sType)
   {
    //整数
    case "int":
     if(!validInt(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //小数
    case "float":
     if(!validFloat(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //字符串
    case "string":
     if(!validString(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //数字编号
    case "nuidck":
     if(!nuidck(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;


    case "checkid":
     if(!checkid(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;


    case "estring":
     if(!valideString(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    case "cstring":
     if(!validcString(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;

    //日期
    case "date":
     if(!validDate(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //邮件
    case "email":
     if(!validEmail(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //单选按钮
    case "radio":
     if(!validRadio(eles[i].name))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //复选按钮
    case "checkbox":
     // alert(eles[i].name);
     if(!validBox(eles[i].name))
     { 
      event.returnValue=false;
      return false;
     }
     break;
    //下拉列表框
    case "select":
     if(!validSelect(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //列表框
    case "list":
     if(!validList(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //比较
    case "compare":
     if (!validCompare(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
   }//end swith
  }
 }
 event.returnValue=true;
 return true;
}
/***验证是否为整数***/
function validInt(ele)
{
 if(!isInt(ele.value))
 {
  alert("请输入有效整数");
  ele.focus();
  return false;
 }
 else
 {
  if(ele.max!=null && !isNaN(ele.max))
   if(parseInt(ele.max)<parseInt(ele.value))
   {
    alert("您输入的 "+ convertNullToSpace(ele.on)+" 值应该小于"+ele.max);
    ele.focus();
    return false;
   }
  if(ele.min!=null && !isNaN(ele.min))
   if(parseInt(ele.min)>parseInt(ele.value))
   {
    alert("您输入的 "+ convertNullToSpace(ele.on)+" 值应该大于"+ele.min);
    ele.focus();
    return false;
   }
 }
 return true;
}
/***判断是否为整数***/
function isInt(s)
{
 var patrn=/^0|^[1-9]\d*/;
 if (!patrn.exec(s))
 {
  return false;
 }
 else
 {
  return true;
 }
}
/***验证是否为小数***/
function validFloat(ele)
{
 if(isNaN(ele.value))
 {
  alert("请输入有效数字");
  ele.focus();
  return false;
 }
 else
 {
  if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
  {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 值小数位最多为"+ele.decimalLen+"个小数位");
   ele.focus();
   return false;
  }
  if(ele.max!=null && !isNaN(ele.max))
   if(parseInt(ele.max)<parseInt(ele.value))
   {
    alert("您输入的 "+ convertNullToSpace(ele.on)+" 值应该小于"+ele.max);
    ele.focus();
    return false;
   }
  if(ele.min!=null && !isNaN(ele.min))
   if(parseInt(ele.min)>parseInt(ele.value))
   {
    alert("您输入的 "+ convertNullToSpace(ele.on)+" 值应该大于"+ele.min);
    ele.focus();
    return false;
   }
 }
 return true;
}

/***验证是否为字符串***/
function validString(ele)
{
 //最小长度
 if(ele.mil!=null && !isNaN(ele.mil))
 {
  var value=new String(ele.value);
  if(value.replace(/[^\x00-\xff]/g,"**").length<parseInt(ele.mil))
  {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最小长度为"+ele.mil);
   ele.focus();
   return false;
  }
 }
 //最大长度
 if(ele.mal!=null && !isNaN(ele.mal))
 {
  var value=new String(ele.value);
  if(value.replace(/[^\x00-\xff]/g,"**").length>parseInt(ele.mal))
  {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最大长度为"+ele.mal);
   ele.focus();
   return false;
  }
 }
 return true;
}

/***验证是否为英文字符串***/
function valideString(ele)
{
var str=new String(ele.value);
if (str.replace(/[^\x00-\xff]/g,"**").length!=str.length)
{
   alert("您输入的 "+convertNullToSpace(ele.on)+" 中包含双字节字符");
   ele.focus();
   return false;
}

 //最小长度
 
 if(ele.mil!=null && !isNaN(ele.mil))
 {
  var value=new String(ele.value);
  if(value.length<parseInt(ele.mil))
  {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最小长度为"+ele.mil);
   ele.focus();
   return false;
  }
 }
 //最大长度
 if(ele.mal!=null && !isNaN(ele.mal))
 {
  var value=new String(ele.value);
  if(value.length>parseInt(ele.mal))
  {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最大长度为"+ele.mal);
   ele.focus();
   return false;
  }
 }
 return true;
}


/***验证身份证号码***/
function checkid(ele)
{

  var sID = new String(ele.value);

  if(!(/^\d{15}$|^\d{18}$|^\d{17}x$/.test(sID)))
    {
   alert("您输入正确的 "+convertNullToSpace(ele.on));
   ele.focus();
   return false;
   }
 return true;
}


/***验证数字编号***********/

function nuidck(ele)
{
var str=new String(ele.value);
var cmp="0123456789-";

//是乎为字符
for (var i=0;i<str.length;i++)
{
if (cmp.indexOf(str.substring(i,i+1))<0)
{
   alert("您输入的 "+convertNullToSpace(ele.on)+" 非法字符");
   ele.focus();
   return false;
}
}


 //最小长度
 if(ele.mil!=null && !isNaN(ele.mil) && str.length<parseInt(ele.mil))
 {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最小长度为"+ele.mil);
   ele.focus();
   return false;
 }


 //最大长度
 if(ele.mal!=null && !isNaN(ele.mal) && str.length>parseInt(ele.mal))
 {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最大长度为"+ele.mal);
   ele.focus();
   return false;
 }


return true;
}

 

/***验证是否为中文字符串***/
function validcString(ele)
{
var str=new String(ele.value);
if (str.replace(/[^\x00-\xff]/g,"**").length!=str.length*2)
{
   alert("您输入的 "+convertNullToSpace(ele.on)+" 中包含单字节字符");
   ele.focus();
   return false;
}
 //最小长度
 if(ele.mil!=null && !isNaN(ele.mil))
 {
  var value=new String(ele.value);
  if(value.length<parseInt(ele.mil))
  {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最小长度为"+ele.mil);
   ele.focus();
   return false;
  }
 }
 //最大长度
 if(ele.mal!=null && !isNaN(ele.mal))
 {
  var value=new String(ele.value);
  if(value.length>parseInt(ele.mal))
  {
   alert("您输入的 "+convertNullToSpace(ele.on)+" 字数最大长度为"+ele.mal);
   ele.focus();
   return false;
  }
 }
 return true;
}


/***验证是否为日期格式***/
function validDate(ele)
{
 if(!isDate(ele.value)&&ele.value!="")
 {
  alert("请输入有效日期(yyyy-mm-dd)");
  ele.focus();
  return false;
 }
 return true;
}
/***判断是否为日期***/
function isDate(str)
{
 var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})/);
 if(r==null)
 {
  return false;
 }
 var d= new Date(r[1], r[3]-1, r[4]);
 if(!(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]))
 {
  return false;
 }
 return true;
}
/***验证是否为电子邮箱***/
function validEmail(ele)
{
 if(!isEmail(ele.value))
 {
  alert("请输入有效邮箱");
  ele.focus();
  return false;
 }
 return true;
}
/***判断是否为邮箱***/
function isEmail(str)
{
 if(str.match(/[\w-.]+@{1}[\w-]+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig)!=str)
  return false;
 else
  return true;
}
/***验证单选按钮是否需要选择***/
function validRadio(eleName)
{
 var ele = document.getElementsByName(eleName);
 //eval("var rads="+name+"."+ele.name);
 var selectCount=0;
 for(var i=0;i<ele.length;i++)
 {
  if(ele[i].checked)
  {
   selectCount++;
  }
 }

 if(ele[0].r!=null)
 {
  if(selectCount==0)
  {
   alert("请选择"+convertNullToSpace(ele[0].on));
   ele[0].focus();
   return false;
  }
 }
 return true;
}
/***验证复选按钮是否需要选择***/
function validBox(eleName)
{
 var ele = document.getElementsByName(eleName); //add by eyes
 //alert(ele[2].mis);
 //alert("ele length:"+ele.length);
 //   eval("var chks="+name+"."+ele.name);
 var selectCount=0;
 for(var i=0;i<ele.length;i++)
 {
  if(ele[i].checked)
  {
   selectCount++;
  }
 }

 if(ele[0].mis!=null && !isNaN(ele[0].mis))//注意这里用ele[0],而不是ele.minsel
 {
  //alert("有mis");
  if(selectCount<parseInt(ele[0].mis))
  {
   alert(convertNullToSpace(ele.on)+"至少选择"+ele[0].mis+"项");
   ele[0].focus();
   return false;
  }
 }
 if(ele[0].mas!=null && !isNaN(ele[0].mas))
 {
  if(selectCount>parseInt(ele[0].mas))
  {
   alert(convertNullToSpace(ele[0].on)+"至多选择"+ele[0].mas+"项");
   ele[0].focus();
   return false;
  }
 }
 return true;
}
/***验证下拉列表框是否需要选择***/
function validSelect(ele)
{
 //var rads = document.getElementsByName(ele.name);
 if(ele.r!=null && ele.r)
 {
  if(ele.selectedIndex==0)
  {
   alert("请选择"+convertNullToSpace(ele.on));
   ele.focus();
   return false;
  }
 }
 return true;
}

 


/***验证列表框的选择项数***/
function validList(ele)
{
 //var rads = document.getElementsByName(ele.name);
 var selectCount=0;
 for(var i=0;i<ele.options.length;i++)
 {
  if(ele.options[i].selected)
  {
   selectCount++;
  }
 }

 if(ele.mis!=null && !isNaN(ele.mis))
 {
  if(selectCount<parseInt(ele.mis))
  {
   alert(convertNullToSpace(ele.on)+"至少选择"+ele.mis+"项");
   ele.focus();
   return false;
  }
 }
 if(ele.mas!=null && !isNaN(ele.mas))
 {
  if(selectCount>parseInt(ele.mas))
  {
   alert(convertNullToSpace(ele.on)+"至多选择"+ele.mas+"项");
   ele.focus();
   return false;
  }
 }
 return true;
}
/***将NULL转化为空格,用于显示对象名称***/
function convertNullToSpace(paramValue)
{
 if(paramValue==null)
  return "";
 else
  return paramValue;
}
/***检查小数位数***/
function checkDecimal(num,decimalLen)
{
 var len = decimalLen*1+1;
 if(num.indexOf('.')>0)
 {
  num=num.substr(num.indexOf('.')+1,num.length-1);
  if ((num.length)<len)
  {
   return true;
  }
  else
  {
   return false;
  }
 }
 return true;
}
/***去除空格***/
function trim(str)
{
 if (str.length > 0)
 {
  while ((str.substring(0,1) == " ") && (str.length > 0))
  {
   str = str.substring(1,str.length);
  }
  while (str.substring(str.length-1,str.length) == " ")
  {
   str = str.substring(0,str.length-1); }
  }
 return str;
}

///////////////////////add by eyes/////////////////////
//比较
function validCompare(ele)
{
 var to = document.getElementsByName(ele.to);
 if (ele.value!=to[0].value)
 {
  alert("两次"+to[0].on+"不一样");
  ele.focus();
  return false;
 }
 return true;
}

//检测是是否包含安全字符串

function chksafe(a)
{
 fibdn = new Array ("'" ,";");
 i=fibdn.length;
 j=a.length;
 for (ii=0;ii<i;ii++)
 { for (jj=0;jj<j;jj++)
  { temp1=a.charAt(jj);
   temp2=fibdn[ii];
   if (temp1==temp2)
   { return false; }
  }
 }
 return true;
}在调用的时候就把上面的页面包含进来
<script language="javascript" src="checkform.js"></script>
比如你在b页面用这

程序代码 程序代码

<form name='myform' method='post' onSubmit="return checkForm('myform')">
<input name="name" class=i1 id="name" title='[必填]3-10个字符长度,不必须为中文' size="20" vt="estring" on="用户名" r="true" mal="10" mil=3>
</form>


这样就可以了
注意认真看checkform.js里面前面的说明,这样你用起来就很方便。嘿嘿。很久没有拿好东西出来了
是因为这段时间太忙了。很少能来blog来写点东西。
希望大家喜欢。

posted on 2006-03-17 11:33  夏日里的向日葵  阅读(840)  评论(0)    收藏  举报