CSDN博客

img lwqJ

JavaScript客户端程序验证

发表于2004/7/18 19:05:00  2112人阅读

分类:

  此程序在window2k下测试通过.在Linux尚末测试.

一JavaScript源程序

**
  *文件名:check.js
  *JavaScript程序
  *客户端验证数函数
  *请可存源文件的完整性,尊重每一份执爱开源的辛苦付出
  */
 

//检验字符是否包函非法字符
function havegg(elem){
  var str = "~!@%^&*();'/"?><[]{}//|,:/=+—“”‘";
  for(i=0;i<elem.length;i++)
   if (str.indexOf(elem.charAt(i)) !=-1){
          return false;
 }
     return true;
}
//判断字符由字母和数字,下划线组成.且开头的只能是下划线和字母
function isUserId(elem){
  var pattern=/^(/b[a-zA-Z]|/b_)([a-zA-Z0-9]+_?[a-zA-Z0-9]*)+$/;
  if(pattern.test(elem)){
    return true;
  }else{
    return false;
  }
}
//检查是否输入为中文汉字。(真实姓名,必须输入为汉字).
function isChinese(elem){
  var pattern=/[^/x00-/xff]/g;
  if(pattern.test(elem)){
     //包含中文
  return false;
  }else{
    //不包含中文
     return true;
  }
}

//检验输入关键字是否合法
function isSearch(elem)
{
 var /">pattern=/^[^`~!@#$%^&*()+=|///[/]/{/}:;/'/,.<>/? ]{1?]{">}[^`~!@$%^&()+=|///[/]/{/}:;/'/,.<>?]{0,19}$/;
 if (!pattern.exec(elem)){
  return false;
 }else{
  return true;
 }
}
//表单的值不能为空
function isNull(elem){
  //var pattern=/^/s+|/s+$/;
  if(elem.replace(/(^/s+|/s$)/g, "")==""){
  return false;
  }else{
  return true;
  }
}
//不能超过imax字符
function imax(elem, imax){
 if(elem.length>imax){
  return false;
 }else{
  return true;
 }
}
//不能少于imix字符
function imix(elem, imix){
 if(elem.length<imix){
  return false;
 }else{
  return true;
 }
}
//闰年判断
function isleapyear(thisyear){
  return(((thisyear%4==0) && (thisyear%100!=0)) || (thisyear%400==0))
}
//检验日期格式
//2004-01-12或者86-1-21 还可以用"/"代替"|"来间隔
function isShortDate(elem){
  var pattern=/^(/d{1,4})([-|/])(/d{1,2})([-|/])(/d{1,2})$/;
  var temp=elem.match(pattern);
  if(temp==null){
    return  false;
  }
  var d=new Date(temp[1]+"/"+temp[3]+"/"+temp[5]);
  return d.getYear()==temp[1]&&
         (d.getMonth()+1)==temp[3]&&
   d.getDate()==temp[5];
}
//检验邮政编码
function isPost(elem){
  var pattern=/^[0-9]{6}$/;
  if(!pattern.test(elem)){
    return false;
  }else{
    if(parseInt(elem)<10000||parseInt(elem)>850000){
   return false;
   }
   return true;
  }
}
//电话号码
function isFixTel(elem){
 var pattern=/(^[0-9]{3,4}[-|/][0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)/;
 if(pattern.test(elem)){
  return true;
 }else{
  //alert("电话号码格式不正确");
  return false;
 }
}
function isMoveTel(elem){
 var pattern=/^0{0,1}13[0-9]{9}$/;
 if(pattern.test(elem)){
  return true;
 }else{
  //elert("电话号码不正确");
  return false;
 }
}
//检验身份证
function isIdCardNum(elem){
  var pattern="";
  var isSame=false;
  var numLength=elem.length;
  var temp;
  if(numLength==15){
    pattern=/^([0-9]{6})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{3})$/;
  }else if(numLength==18){
    pattern=/^([0-9]{6})([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{3})([0-9]{1})$/;
  }else{
    return false;
  }
  temp=elem.match(pattern);
  if(temp!=null){
    if(numLength==15){
   var date15=new Date("19"+temp[2]+"/"+temp[3]+"/"+temp[4]);
   isSame=date15.getYear()==temp[2]&&
          (date15.getMonth()+1)==temp[3]&&
    date15.getDate()==temp[4];
 }
 if(numLength==18){
   var date18=new Date(temp[2]+"/"+temp[3]+"/"+temp[4]);
   isSame=date18.getFullYear()==temp[2]&&
          (date18.getMonth()+1)==temp[3]&&
    date18.getDate()==temp[4];
 }
 if(!isSame){
   return false;
 }
   }
   return true;
}
//是否选择单选按钮
function radioselected(radioBth) {
  for(i=0;i<radioBth.length;i++){
    if(radioBth[i].checked) return true
  }
  return false
}
 
//打开窗口
  function openwin(page,w,h){ 
 window.open(page,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width="+w+",left=20,top=20,height="+h);
}
//文件上传
extArray = new Array(".gif", ".jpg", ".png");
function LimitAttach(form, file) {
   allowSubmit = false;
   if (!file) return;
   while (file.indexOf("//") != -1)
   file = file.slice(file.indexOf("//") + 1);
   ext = file.slice(file.indexOf(".")).toLowerCase();
   for (var i = 0; i < extArray.length; i++) {
     if (extArray[i] == ext) {
   allowSubmit = true;
   break;
   }
   }
   if (allowSubmit) form.submit();
   else
     alert("只能上传以下文件格式:  /n"
     + (extArray.join("  ")) + "/n请重新选一个有效的新文件"
     + "/n或者本地转换文件格式后继续上传");
}
// 文本计数器
function textCounter(field, countfield, maxlimit) {
if (field.value.length > maxlimit){
  field.value = field.value.substring(0, maxlimit);
  // 示用户空间已用完
 // alert("不能再输了,只能输入"+maxlimit+"个字符");
  // return false;
}else
  countfield.value = maxlimit - field.value.length;
}

二.测试程序

<html>
<head>
   <title>测试验证脚本check.js</title>
 
  <style type="text/css">
  <!--Begin
  body, form{font-size:10pt; font-family:Verdana;}
  .line{BORDER-TOP-STYLE:none;
         BORDER-LEFT-STYLE:none;
   BORDER-RIGHT-STYLE:none;
      BORDER-BOTTOM-COLOR:#FF0000}

  file://End-->
  </style>
 
  <script language="javascript" src="check.js"></script>
  <script language="javascript">
  <!--Begin
  function isReady(){
     file://search
  if(isSearch(validate.search.value)==false||isNull(validate.search.value)==false||imax(validate.search.value, 26)==false){
     alert("可能含有非法字符/n"+"或者为空"+"/n或都超过总长26");
  validate.search.focus();
  return false;
  }
  file://user
  if(isUserId(validate.user.value)==false||imax(validate.user.value, 10)==false||imix(validate.user.value, 4)==false){
      alert("由/"_/"(下划线)和/"a-zA-Z0-9/"组成/n"+"并且以/"_/"(下划线)和/"a-zA-Z/"开头/n"+
          "字符串长度必须大于4并且小于10个字符长");
   validate.user.focus();
   return false;
  }
  file://realname
  if((!isChinese(validate.realname.value)==false)||imax(validate.realname.value, 4)==false||imix(validate.realname.value, 2)==false){
    alert("请输入中文/n"+"不能少于二个字符多于4个字符");
    validate.realname.focus();
    return false;
  }
  file://date
  if(isShortDate(validate.date.value)==false){
    alert("日期格式无效");
    validate.date.focus();
    return false;
  }
  file://post
  if(isPost(validate.post.value)==false){
     alert("邮政编码无效");
  validate.post.focus();
  return false;
  }
  file://tel
  if(isFixTel(validate.tel.value)==false&&isMoveTel(validate.tel.value)==false){
    alert("电话号码无效");
    validate.tel.focus();
    return false;
  }
  file://cardid
  if(isIdCardNum(validate.cardid.value)==false){
     alert("输入的身份证无效"+"/n请核对后重新输入");
  validate.cardid.focus();
  return false;
  }
  file://message
  if(isNull(validate.message.value)==false||imax(validate.message.value, 18)==false){
    alert("不能发送空信息");
    alert(validate.message.value.length);
    validate.message.focus();
    return false;
  }
 /*
  *  else{
  *    alert(validate.message.value.length);
  * }
  */
  return true;
  }
  file://--End -->
  </script>
  <script language="javascript">
  <!--Begin
  function checkAll(form){
     for(var i=0; i<form.elements.length; i++){
     var item=form.elements[i];
  if(item.name!="checkall")
     item.checked=form.checkall.checked;
  }
  }
  file://End-->
  </script>
</head>

<body>
<form name="validate" action="#" method="post" enctype="multipart/form-data" onSubmit="return isReady();">
不含有非法字符,不超过26字符长,不为空<br>
<input type="text" name="search" value="searh">
<br>
由字母和数字,下划线组成.且开头的只能是下划线和字母,字符长大于4且小于10,不为空<br>
<input type="text" name="user" value="_bla_pho">
<br>
输入字符中文汉字:不能多于四个,小于二个<br>
<input type="text" name="realname" value="李凡">
<br>
日期:2004-01-12或者84-1-10 可以用"/"代替"|"来间隔<br>
<input type="text" name="date" value="2004/12/21">
<br>
邮政编码:6位数字,最大值为(西藏拉萨850000),最小值为(呼和浩特010000)<br>
<input type="text" name="post" value="342800">
<br>
电话号码:手机或者小灵通或者庭固定电话。如果要使作区号则必须用"-"或者"/"区分号码<br>
<input type="text" name="tel" value="(0592)5212425">
<br>
身份证<br>
<input type="text" name="cardid" value="666666198512218888">
<br>
<br>
计算文本区还剩余空间:标点。汉字。数字。字母。按键输入下计数减一至到为0<br>
你还可以输入:
<input readonly type="text" class="line" name="counter" value="18" size="3">个字符<br>
<textarea cols="60" rows="4" name="message" wrap="physical"
     onKeyDown="textCounter(this.form.message, this.form.counter, 18);"
  onKeyUP="textCounter(this.form.message, this.form.counter, 18);"></textarea>

<p>
<input type="checkBox" name="checkall"  onClick="checkAll(this.form);">全选<br>
<input type="checkBox" name="item">item2  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item3  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item4  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item5  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item6  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item7  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item8  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item1  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item1  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item1  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item1  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item1  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item1  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkBox" name="item">item1  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p>

文件上传格式限制:".gif", ".jpg", ".png"<br>
<input type="file" name="uptofile">
<input type="button" value="上传"
onClick="LimitAttach(this.form, this.form.uptofile.value);">

<p><input type="submit"  value="提交">
     <input type="reset" value="重置">
</form>

<!-- 为了更直观些 也就不用表格来扰乱视觉.即。不在意布局样式 -->
<!-- 为了方便单个测试。我对各项进行了初始值设置 -->
</body>
</html>

0 0

相关博文

我的热门文章

img
取 消
img