页面输入完整性是编写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. Android中的一些小技巧

    这个是App判断是pad还是手机的代码: public boolean isTabletDevice() { TelephonyManager telephony = (TelephonyManage ...

  2. eclipse插件之easyshell

    在eclipse marketplace可以找到这个插件,名字就是easyshell,下载安装完以后,可以通过配置快捷键实现: enjoy it.

  3. android开机启动代码

    1)public class StartupReceiver extends BroadcastReceiver { @Override public void onReceive(Context c ...

  4. (二)hibernate进阶

    1.hibernate.cfg.xml常用配置以上节代码为例 <session-factory> <property name="connection.username&q ...

  5. jquery 入门与知识

    一)什么是jQuery? [以封装的思想,重构<<图片显示和隐藏>>] 第三方组织预先写好的一些实用JS文件.类,方法,都统称为JS实用库,免费放在网上,同时配有相关的学习文档 ...

  6. Ubuntu下添加新分区并设置挂载点

    Ubuntu下添加新分区并设置挂载点   最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小 ...

  7. 使用 Python 的 matplotlib 绘图库进行绘图

    matplotlib 是 Python 最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 1  使用 Ma ...

  8. NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]

    http://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477607.html 上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet ...

  9. C++中四种类型转换以及const_cast是否能改变常量的问题

    we have four specific casting operators:dynamic_cast, reinterpret_cast, static_cast and const_cast. ...

  10. Mysql 比较运算符详解

    熟悉了最简单的算术运算符,再来看一下比较运算符.当使用SELECT 语句进行查询时,MySQL允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回1,为假则返回0,比较结果不确定则返 ...