页面输入完整性是编写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. }

使用JAVASCRIPT进行数据完整性验证的更多相关文章

  1. Javascript之登陆验证

    匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配网址URL的正则表达式:http ...

  2. JavaScript表单验证年龄

    JavaScript表单验证年龄,判断一个输入量是否符合年龄,通过正则表达式实现. //检查年龄 function isAge(str){ var mydate=new Date; var now=m ...

  3. 前端工具 - 15个最佳的 JavaScript 表单验证库

    客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...

  4. JavaScript表单验证和正则表达式

    JavaScript表单验证 分为四类: 1.非空验证 常用于用户名等 2.相等验证 常用于验证两次输入的密码 3.范围验证 常用于年龄等 4.正则验证 用于手机号,邮箱号等 以下是实例: <! ...

  5. 15个最佳的 JavaScript 表单验证库

    客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...

  6. JavaScript 表单验证入门

    JavaScript 表单验证 JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证. 被 JavaScript 验证的这些典型的表单数据有: 用户是否已填写表单 ...

  7. JavaScript 表单验证 案例

    JavaScript 表单验证 案例 版权声明:未经授权,严禁转载!   编写 HTML 文件,搭建主体界面 <html> <head> <meta charset=&q ...

  8. 10个强大的Javascript表单验证插件推荐

    创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScri ...

  9. JavaScript 表单验证正则表达式大全

    JavaScript 表单验证正则表达式大全[转载] 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[ ...

随机推荐

  1. 解决ARC下performselector-may-cause-a-leak-because-its-selector-is-unknown 警告

    在ARC下使用 [theTarget performSelector:theTarget withObject:Nil]; 会出现警告:performselector-may-cause-a-leak ...

  2. 【PAT】1028. List Sorting (25)

    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1028 题目描述: Excel can sort records according to an ...

  3. 【转】DNS查询过程

    DNS查询过程 DNS的查询过程是指在客户端通过DNS服务器将一个IP地址转换为一个FQDN(Fully Qualified Domain Name,完全合格的域名),或将一个FQDN转化为一个IP地 ...

  4. No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()

    3-21 10:14:20.833 2892-2892/? E/art: No implementation found for long com.baidu.platform.comjni.map. ...

  5. 不能使用控制器“XXXController”的单个实例处理多个请求。如果正在使用自定义控制器工厂,请确保它为每个请求创建该控制器的新实例。

    原因:应用@{Html.RenderAction("aaa","XXX");}时路径路由和动作控制器不能是相同的,不然会的错. 比如:http://localh ...

  6. ubuntu执行级别,设置单用户模式

    redhat的runlevel级别定义例如以下:   0:关机.不能将系统缺省执行级别设置为0,否则无法启动. 1:单用户模式.仅仅同意root用户对系统进行维护. 2:多用户模式.但不能使用NFS( ...

  7. 【BIRT】02_开发一张简单的报表

    上一节我们已经将开发环境准备完毕,那么接下来就开发一张简单的报表 1.BIRT开发环境 打开已经安装好的BIRT开发环境 1.1新建Project 菜单栏>> file >> ...

  8. Linux命令-目录处理命令:ls

    ls 查看当前目文件 ls -a  查看当前目录的所有文件(--all所有文件) 以"."开头的文件是隐藏文件. ls / 查看根目录的文件 ls -l 查看当前目录文件(--lo ...

  9. AutoFac文档3(转载)

    目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 服务类型,名称和键 同 ...

  10. servlet响应解析

    response对象可以设置一些响应信息 1)设置状态码 response.setStatus(int) 2)设置响应头信息.定时刷新或者间隔 n 秒后跳转 response.setHeader(&q ...