1. **********Check.js**************   
  2.   
  3. /*
  4. *--------------- 客户端表单通用验证CheckForm(oForm) -----------------
  5. * 功能:通用验证所有的表单元素.
  6. * 使用:
  7. *     <form name="form1" οnsubmit="return CheckForm(this)">
  8. *     <input type="text" name="id" check="^\S+$" warning="id不能为空,且不能含有空格"/>
  9. *     <input type="submit"/>
  10. *     </form>
  11. * author:wanghr100(灰豆宝宝.net)
  12. * email:wanghr100@126.com
  13. * update:19:28 2004-8-23
  14. * 注意:写正则表达式时一定要小心.不要让"有心人"有空子钻.
  15. * 已实现功能:
  16. * 对text,password,hidden,file,textarea,select,radio,checkbox进行合法性验证
  17. * 待实现功能:把正则表式写成个库.
  18. *--------------- 客户端表单通用验证CheckForm(oForm) -----------------
  19. */  
  20.   
  21.   
  22. //主函数   
  23. function CheckForm(oForm)   
  24. {   
  25.      var els = oForm.elements;   
  26.     //遍历所有表元素   
  27.     for(var i=0;i<els .length;i++)   
  28.      {   
  29.         //是否需要验证   
  30.         if(els[i].check)   
  31.          {   
  32.             //取得验证的正则字符串   
  33.              var sReg = els[i].check;   
  34.             //取得表单的值,用通用取值函数   
  35.              var sVal = GetValue(els[i]);   
  36.             //字符串->正则表达式,不区分大小写   
  37.              var reg = new RegExp(sReg,"i");   
  38.             if(!reg.test(sVal))   
  39.              {   
  40.                 //验证不通过,弹出提示warning   
  41.                  alert(els[i].warning);   
  42.                 //该表单元素取得焦点,用通用返回函数   
  43.                  GoBack(els[i])     
  44.                 return false;   
  45.              }   
  46.          }   
  47.      }   
  48. }   
  49.   
  50. //通用取值函数分三类进行取值   
  51. //文本输入框,直接取值el.value   
  52. //单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个   
  53. //单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个   
  54. function GetValue(el)   
  55. {   
  56.     //取得表单元素的类型   
  57.      var sType = el.type;   
  58.     switch(sType)   
  59.      {   
  60.         case "text":   
  61.         case "hidden":   
  62.         case "password":   
  63.         case "file":   
  64.         case "textarea": return el.value;   
  65.         case "checkbox":   
  66.         case "radio": return GetValueChoose(el);   
  67.         case "select-one":   
  68.         case "select-multiple": return GetValueSel(el);   
  69.      }   
  70.     //取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数   
  71.      function GetValueChoose(el)   
  72.      {   
  73.          var sValue = "";   
  74.         //取得第一个元素的name,搜索这个元素组   
  75.          var tmpels = document.getElementsByName(el.name);   
  76.         for(var i=0;i<tmpels .length;i++)   
  77.          {   
  78.             if(tmpels[i].checked)   
  79.              {   
  80.                  sValue += "0";   
  81.              }   
  82.          }   
  83.         return sValue;   
  84.      }   
  85.     //取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数   
  86.      function GetValueSel(el)   
  87.      {   
  88.          var sValue = "";   
  89.         for(var i=0;i<el.options.length;i++)   
  90.          {   
  91.             //单选下拉框提示选项设置为value=""   
  92.             if(el.options[i].selected && el.options[i].value!="")   
  93.              {   
  94.                  sValue += "0";   
  95.              }   
  96.          }   
  97.         return sValue;   
  98.      }   
  99. }   
  100.   
  101. //通用返回函数,验证没通过返回的效果.分三类进行取值   
  102. //文本输入框,光标定位在文本输入框的末尾   
  103. //单多选,第一选项取得焦点   
  104. //单多下拉菜单,取得焦点   
  105. function GoBack(el)   
  106. {   
  107.     //取得表单元素的类型   
  108.      var sType = el.type;   
  109.     switch(sType)   
  110.      {   
  111.         case "text":   
  112.         case "hidden":   
  113.         case "password":   
  114.         case "file":   
  115.         case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();   
  116.         case "checkbox":   
  117.         case "radio": var els = document.getElementsByName(el.name);els[0].focus();   
  118.         case "select-one":   
  119.         case "select-multiple":el.focus();   
  120.      }   
  121. }  
    1. <script language="JavaScript" src="Check.js"></script>   
    2. 通用表单函数测试:   
    3. <form name="form1" οnsubmit="return CheckForm(this)">   
    4. test:<input type="text" name="test"/>不验证<br />   
    5. 账号:<input type="text" check="^\S+$" warning="账号不能为空,且不能含有空格" name="id"/>不能为空<br />   
    6. 密码:<input type="password" check="\S{6,}" warning="密码六位以上" name="id"/>六位以上<br />   
    7. 电话:<input type="text" check="^\d+$" warning="电话号码含有非法字符" name="number" value=""/><br />   
    8. 相片上传:<input type="file" check="(.*)(\.jpg|\.bmp)$" warning="相片应该为JPG,BMP格式的" name="pic" value="1"/><br />   
    9. 出生日期:<input type="text" check="^\d{4}\-\d{1,2}-\d{1,2}$" warning="日期格式2004-08-10"   name="dt" value=""/>日期格式2004-08-10<br />   
    10. 省份:   
    11. <select name="sel" check="^0$" warning="请选择所在省份">   
    12. <option value="">请选择   
    13. </option><option value="1">福建省   
    14. </option><option value="2">湖北省   
    15. </option></select>   
    16. <br />   
    17. 选择你喜欢的运动:<br />   
    18. 游泳<input type="checkbox" name="c" check="^0{2,}$" warning="请选择2项或以上"/>   
    19. 篮球<input type="checkbox" name="c"/>   
    20. 足球<input type="checkbox" name="c"/>   
    21. 排球<input type="checkbox" name="c"/>   
    22. <br />   
    23. 你的学历:   
    24. 大学<input type="radio" name="r" check="^0$" warning="请选择一项学历"/>   
    25. 中学<input type="radio" name="r"/>   
    26. 小学<input type="radio" name="r"/>   
    27. <br />   
    28. 个人介绍:   
    29. <textarea name="txts" check="^[\s|\S]{20,}$" warning="个人介绍不能为空,且不少于20字"></textarea>20个字以上   
    30. <input type="submit"/>   
    31. </form>