页面输入完整性是编写BS经常遇到的问题,如果那里需要就到那里写,那可是要花不少的时候,并且造成不必要的浪费,下面是一个通过校验脚本,使用非常方便,通过传入FORM名就可以进行校验,通过在页面控件中增加用户本身自定义属性,进行方便的验证,包括数字的输入、密码的输入、EMAIL的输入,用户本身可以进行无限的扩展,使用如下,在页面中加入如下代码:

  1. <form name="form1">
  2. <input type="text" name="t1" req="0" size="20"><br>
  3. <input type="text" name="t2" req="0" size="20"><br>
  4. <input type="text" name="t3" req="0" size="20"><br>
  5. <input type="text" name="t4" req="1" size="20"><br>
  6. <input type="text" name="t5" req="1" customtype="email" displayname="电子邮件" size="20"><br>
  7. <input type="button" name="bt" value="check" onclick="checkForm(document.form1)">
  8. </form>

并在页头加以包含以下代码的JS脚本:

  1. var customtypes = new Array("num","plus","int","email","link","password","name","date","money","date8");
  2. var custommessage = new Array(
  3. "不是一个有效的数字。",
  4. "不是一个有效的正整数。",
  5. "不是一个有效的整数。",
  6. "不是一个有效的电子邮件地址。",
  7. "不是一个有效的链接,请确认输入了完整的地址,例如http://www.cnlist.com。",
  8. "不是一个有效的密码,密码只能使用字母、下划线与数字,不能包含符号与空格。",
  9. "不是一个有效的名称,名称只能使用字母、下划线与数字,不能包含符号与空格。",
  10. "不是一个有效的日期。",
  11. "不是一个有效的money格式。",
  12. "不是一个有效的8位日期,如:20050801。"
  13. );
  14. function checkForm(oForm){
  15. window.event.returnValue = false;
  16. for (var i=0;i<oForm.all.tags("input").length;i++){
  17. var ele = oForm.all.tags("input")[i];
  18. var ct = ele.getAttribute("customtype");
  19. var req = ele.getAttribute("req");
  20. var dn = ele.getAttribute("displayname");
  21. if (null == dn){
  22. dn = ele.name;
  23. }
  24. dn = "“" + dn + "”";
  25. if(ele.value!=null){
  26. ele.value = ele.value.replace(/%/g, "%");
  27. }
  28. var nr = new String(ele.value);
  29. if ("1" == req){
  30. if (nr.length < 1){
  31. alert(dn + "不可以省略,请重新输入。");
  32. //ele.focus();
  33. focusIt(ele);
  34. return false;
  35. }
  36. }
  37. if((''==req || '0' ==req || null==req) && (ele.value == "")) continue;//不必要且没有输入时,下一个
  38. if ((("" == req)||(null == ct)) &&(ele.value == "")) continue;
  39. //检查自定义类型
  40. //纠正自定义类型在req不等于1时仍要求输入的bug
  41. if (("1" == req) || (nr.length > 0)) {
  42. for (var j=0;j<customtypes.length;j++){
  43. if (ct == customtypes[j]){
  44. if(ct=="money"){
  45. eval("var rtn = check_" + customtypes[j] + "(ele);");
  46. }else{
  47. eval("var rtn = check_" + customtypes[j] + "(ele.value);");
  48. }
  49. if (!rtn){
  50. alert(dn + custommessage[j]);
  51. //ele.focus();
  52. focusIt(ele);
  53. return false;
  54. }
  55. }
  56. }
  57. }
  58. }
  59. window.event.returnValue = true;
  60. return true;
  61. }
  62. function check_money(s) {
  63. s.value=s.value.replace(/,/g, "")
  64. var re = /^(/+|-)?/d+(./d+)?$/i;
  65. return re.test(s.value);
  66. }
  67. function check_email(s){
  68. var re = /^/w+@(/w)+((.(/w)+)+)?$/i;
  69. return re.test(s);
  70. }
  71. function check_num(s){
  72. var re = /^(/+|-)?/d+(./d+)?$/i;
  73. return re.test(s);
  74. }
  75. function check_int(s){
  76. var re = /^(/+|-)?/d+$/i;
  77. return re.test(s);
  78. }
  79. function check_plus(s) {
  80. var re = /^[1-9]/d*$/i
  81. return re.test(s);
  82. }
  83. function check_link(s){
  84. var re = /^(http|mailto|ftp|https|telnet)://{2}/i;
  85. return re.test(s);
  86. }
  87. function check_password(s){
  88. var re = /^/w+$/i;
  89. return re.test(s);
  90. }
  91. function check_name(s){
  92. return check_password(s);
  93. }
  94. function check_date8(DateString){
  95. return isDateEight(DateString);
  96. }
  97. //日期检测
  98. function check_date(DateString){
  99. if (DateString==null) return false;
  100. if (Dilimeter=='' || Dilimeter==null)
  101. var Dilimeter = '-';
  102. if (Dilimeter.indexOf("/")>0)
  103. {
  104. Dilimeter="/";
  105. }
  106. var tempy='';
  107. var tempm='';
  108. var tempd='';
  109. var tempH="";
  110. var tempM="";
  111. var tempS="";
  112. var tempymd="";
  113. var temphms="";
  114. var tempArray;
  115. if (DateString.length<8 && DateString.length>19) {
  116. return false;
  117. }
  118. if (DateString.indexOf(" ")>0)
  119. {
  120. temp=DateString.split(" ");
  121. tempymd=temp[0];
  122. temphms=temp[1];
  123. }
  124. else
  125. {
  126. tempymd=DateString;
  127. temphms="00:00:00";
  128. }
  129. tempArray = tempymd.split(Dilimeter);
  130. if (tempArray.length!=3) {
  131. return false;
  132. }
  133. if (tempArray[0].length==4)
  134. {
  135. tempy = tempArray[0];
  136. tempd = tempArray[2];
  137. tempm = tempArray[1];
  138. }
  139. else
  140. {
  141. tempy = tempArray[2];
  142. tempd = tempArray[1];
  143. tempm = tempArray[0];
  144. }
  145. tempArray = temphms.split(":");
  146. if (tempArray.length>3  || tempArray.length<2) {
  147. return false;
  148. }
  149. switch (tempArray.length) {
  150. case 2:
  151. tempH=tempArray[0];
  152. tempM=tempArray[1];
  153. tempS="00";
  154. break;
  155. case 3:
  156. tempH=tempArray[0];
  157. tempM=tempArray[1];
  158. tempS=tempArray[2];
  159. break;
  160. }
  161. var tDateString = tempy + '/'+tempm + '/'+tempd+' '+tempH+":"+tempM+":"+tempS;
  162. var tempDate = new Date(tDateString);
  163. if (isNaN(tempDate)) {
  164. return false;
  165. }
  166. if ((tempDate.getYear().toString()==tempy || tempDate.getYear()==parseInt(tempy,10)-1900)
  167. && (tempDate.getMonth()==parseInt(tempm,10)-1)
  168. && (tempDate.getDate()==parseInt(tempd,10))
  169. && (tempDate.getHours().toString()==parseInt(tempH,10))
  170. && (tempDate.getMinutes().toString()==parseInt(tempM,10))
  171. && (tempDate.getSeconds().toString()==parseInt(tempS,10)))
  172. {
  173. return true;
  174. }
  175. else
  176. {
  177. alert('tDateString='+tDateString);
  178. return false;
  179. }
  180. }
  181. //激活输入组件的焦点
  182. function focusIt(obj){
  183. try{
  184. var ele = mtb;
  185. }catch(e){
  186. try{
  187. obj.focus();
  188. return;
  189. }catch(e){
  190. return;
  191. }
  192. }
  193. for (var i=0;i<ele.length;i++){
  194. swH(i);
  195. try{
  196. obj.focus();
  197. }catch(e){
  198. continue;
  199. }
  200. break;
  201. }
  202. try{
  203. obj.focus();
  204. }catch(e){
  205. return false;
  206. }return true;
  207. }

最新文章

  1. 初识linux
  2. HTML5 Audio/Video 标签,属性,方法,事件汇总
  3. SqList *L 和 SqList * &amp;L的区别/学习数据结构突然发现不太懂 小祥我查找总结了一下
  4. SNS网站成功原因剖析_完结
  5. ACM 田忌赛马
  6. Linux环境安装jdk
  7. ICA
  8. Java通过SpyMemcached来缓存数据
  9. [改善Java代码]不要只替换一个类
  10. 解决VS2010中产生的ipch文件夹和sdf文件
  11. callback用法简介
  12. 关于cocos2dx导入安卓项目至eclipse的诸多问题
  13. 【1】Chrome - 更换主题
  14. python之字符串详解2
  15. 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装
  16. 基本数据类型 int float str
  17. SpringMvc参数传递中乱码问题
  18. 获取CPU ID--查看CPU数量/核数
  19. MySQL 获得当前日期时间 函数【转】
  20. 朴素贝叶斯分类器(Naive Bayes)

热门文章

  1. TP框架中field查询字段
  2. Vertica7 Native Connection Load Balance
  3. 【bat】通过for循环复制一张图片100次
  4. TP5.0生成模块(home/admin)命令
  5. 【LeetCode】66. Plus One (2 solutions)
  6. systemctl 配置mysql 开机启动
  7. Oracle10g 安装步骤
  8. 自己是个菜鸟 自己查找的简单的适合初学的Makefile
  9. 微信client内部推荐项目总结
  10. 使用digitalocean搭建v&#183;p&#183;s