页面输入完整性是编写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. 移动端HTML5框架

    一:移动端HTML5框架 http://jquerymobile.com/jQuery Mobile http://jqtjs.com/jQTouch http://www.sencha.com/pr ...

  2. MySQL 官方文档

    MySQL 5.6 Reference Manual Preface and Legal Notices 1 General Information 2 Installing and Upgradin ...

  3. OpenERP登录页面调整

    在OpenERP的登录页面中,有针对数据库管理的链接,为了安全起见,一般都会通过修改原始的XML来实现隐藏的目的.但这样每次重新安装以后,都要重新修改,很不方便,所以我们可以通过建立一个新模块的方式来 ...

  4. thunder 更改迅雷默认播放器

      更改迅雷的边下边播默认播放器 CreateTime--2017年10月31日08:33:57 Author:Marydon 1.找到迅雷的安装目录,如:D:\SoftWares\PortableE ...

  5. Android开发之Google Map

    2013-07-03 Google Map 提供三种视图: 1. 传统的矢量地图,提供行政区域.交通以及商业信息等. 2. 不同分辨率的卫星照片,与Google Earth 基本一样. 3. 地形地图 ...

  6. 转载【微信支付】jsapi支付之传参问题(使用微信官方SDK之PHP版本) V3之WxpayPubHelper 亲测有效,V3WxpayAPI_php_v3.zip版未测试,理论上也是一样的。

    本文转载至:http://blog.csdn.net/geeklx/article/details/51146151 (微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请 ...

  7. Docker配置本地镜像与容器的存储位置

    默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root Dir" ...

  8. dom与jquery互相转换

    /*取得<input>标签中的value属性的内容[dom对象->jquery对象] var inputElement = document.getElementById(" ...

  9. Mysql Communications link failure 问题的解决

    问题现象 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last p ...

  10. 基于CentOS的MySQL学习补充四--使用Shell批量从CSV文件里插入数据到数据表

    本文出处:http://blog.csdn.net/u012377333/article/details/47022699 从上面的几篇文章中,能够知道怎样使用Shell创建数据库.使用Shell创建 ...