1. /**
  2. * 通常在我们的HTML页面表单中有大量的数据验证工作,
  3. * 免不了要写很多验证表单的js代码,这是一项非常繁琐
  4. * 枯燥的工作。很多程序员也会经常遗漏这项工作。当然
  5. * 一些JavaEE框架中有一些比较好的验证框架提供给我们
  6. * 使用,但是也是需要很多繁琐的配置,页面查看起来也
  7. * 不是很方便。一般程序员使用的也不多。所以写了这一
  8. * 段JavaScript代码提供给大家使用。算是一个简单的
  9. * JavaScript验证框架吧。使用起来很简单,配合下面几
  10. * 种标签使用,能实现大多数表单验证。
  11. * 1.验证输入框类,包括,text,textarea,password,hidden等
  12. * <textValidate
  13. *      field="username" //对应待验证的输入框name属性
  14. *      lableText="用户名" //验证未通过时提示名称
  15. *      altText="用户名必须是数字,字母,下划线,长度在5-10之间"
  16. *      //验证未通过时的提示文字,可不设置,不设置该属性时使用lableText属性提示
  17. *      isValidate="false" //是否验证
  18. *      min="5" //最小长度
  19. *      max="10" //最大长度
  20. *      dataType="account"> //数据类型,可选值:string(字符串),
  21. *          int(整数),email,account(只能是数字,字母,下划线),
  22. *          phone(国内电话号码),postcode(国内邮政编码),code(国内身份证号码),
  23. *          ip(电脑IP地址),正则表达式字符串
  24. * 2.验证单选和复选框是否必选,包括,radio,checkbox等
  25. * <radioValidate
  26. *      field="sex"
  27. *      altText=""
  28. *      lableText="性别"
  29. *      isValidate="false">
  30. * 3.验证下拉框是否必选,包括,select等
  31. * <selectValidate
  32. *      field="city"
  33. *      altText=""
  34. *      lableText="所在城市"
  35. *      isValidate="true"
  36. *      noValue="-1"> //下拉框不选择时的默认值
  37. * Author:BluesLee <br>
  38. * CreateDate:2009-8-7 <br>
  39. * Modifier:BluesLee <br>
  40. * ModifyDate:2009-8-10 <br>
  41. * Version:1.0<br>
  42. * Copyright(c)2009 深蓝工作室<br>
  43. * All right reserved.<br>
  44. *
  45. */
  46. /**
  47. * 表单数据验证<br>
  48. * Author:BluesLee <br>
  49. * CreateDate:2009-8-7 <br>
  50. * Modifier:BluesLee <br>
  51. * ModifyDate:2009-8-10 <br>
  52. * Version:1.0<br>
  53. *
  54. * @param frm,待验证的表单对象
  55. * @return 验证通过返回true,验证失败返回false
  56. */
  57. function validate(frm){
  58. var textValidate=frm.getElementsByTagName("textValidate");
  59. for(var i=0;i<textValidate.length;i++){
  60. var isValidate=textValidate[i].getAttribute("isValidate");
  61. if(isValidate=="false") {
  62. continue;
  63. }
  64. var lable=textValidate[i].getAttribute("lableText");
  65. var min=textValidate[i].getAttribute("min");
  66. var max=textValidate[i].getAttribute("max");
  67. var datatype=textValidate[i].getAttribute("dataType");
  68. var alt=textValidate[i].getAttribute("altText");
  69. var field=document.getElementsByName(textValidate[i].getAttribute("field"))[0];
  70. if(min && min.length>0 && field.value.length<min){
  71. if(alt && alt.length>0){
  72. alert(alt);
  73. }else{
  74. alert(lable+"不能小于"+min+"位!");
  75. }
  76. if(field.select)field.select();
  77. field.focus();
  78. return false;
  79. }
  80. if(max && max.length>0 && field.value.replace(/[^x00-xff]/g,"aa").length>max){
  81. if(alt && alt.length>0){
  82. alert(alt);
  83. }else{
  84. alert(lable+"不能大于"+max+"位!");
  85. }
  86. if(field.select)field.select();
  87. field.focus();
  88. return false;
  89. }
  90. if(datatype && datatype.length>0){
  91. if(datatype=="int"){
  92. if(!/^[0-9]+$/g.test(field.value)){
  93. if(field.select)field.select();
  94. field.focus();
  95. if(alt && alt.length>0){
  96. alert(alt);
  97. }else{
  98. alert(lable+"只能输入整数!");
  99. }
  100. return false;
  101. }
  102. }else if(datatype=="email"){
  103. if(!/^([a-zA-Z0-9_/-/./+]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([a-zA-Z0-9/-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$/g.test(field.value)){
  104. if(field.select)field.select();
  105. field.focus();
  106. if(alt && alt.length>0){
  107. alert(alt);
  108. }else{
  109. alert("Email格式不正确!");
  110. }
  111. return false;
  112. }
  113. }else if(datatype=="account"){
  114. if(!/^[a-zA-Z0-9_]+$/g.test(field.value)){
  115. if(field.select)field.select();
  116. field.focus();
  117. if(alt && alt.length>0){
  118. alert(alt);
  119. }else{
  120. alert(lable+"只能是数字,字母和下划线!");
  121. }
  122. return false;
  123. }
  124. }else if(datatype=="phone"){
  125. if(!/^d{3}-d{8}|d{4}-d{7}$/g.test(field.value)){
  126. if(field.select)field.select();
  127. field.focus();
  128. if(alt && alt.length>0){
  129. alert(alt);
  130. }else{
  131. alert("电话号码格式不正确,正确格式:0511-4405222 或 021-87888822");
  132. }
  133. return false;
  134. }
  135. }else if(datatype=="postcode"){
  136. if(!/^[1-9]d{5}(?!d)$/g.test(field.value)){
  137. if(field.select)field.select();
  138. field.focus();
  139. if(alt && alt.length>0){
  140. alert(alt);
  141. }else{
  142. alert("邮政编码不正确");
  143. }
  144. return false;
  145. }
  146. }else if(datatype=="code"){
  147. if(!/^d{15}|d{18}$/g.test(field.value)){
  148. if(field.select)field.select();
  149. field.focus();
  150. if(alt && alt.length>0){
  151. alert(alt);
  152. }else{
  153. alert("身份证号码不正确");
  154. }
  155. return false;
  156. }
  157. }else if(datatype=="ip"){
  158. if(!/^(((1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))/.){3}((1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/g.test(field.value)){
  159. if(field.select)field.select();
  160. field.focus();
  161. if(alt && alt.length>0){
  162. alert(alt);
  163. }else{
  164. alert("IP地址格式不正确");
  165. }
  166. return false;
  167. }
  168. }else{
  169. if(!new RegExp(datatype,"g").test(field.value)){
  170. if(field.select)field.select();
  171. field.focus();
  172. if(alt && alt.length>0){
  173. alert(alt);
  174. }else{
  175. alert(lable+"输入格式不正确!");
  176. }
  177. return false;
  178. }
  179. }
  180. }
  181. }
  182. var radioValidate=frm.getElementsByTagName("radioValidate");
  183. for(var i=0;i<radioValidate.length;i++){
  184. var isValidate=radioValidate[i].getAttribute("isValidate");
  185. if(isValidate=="false") {
  186. continue;
  187. }
  188. var lable=radioValidate[i].getAttribute("lableText");
  189. var alt=textValidate[i].getAttribute("altText");
  190. var field=document.getElementsByName(radioValidate[i].getAttribute("field"));
  191. var flag=true;
  192. for(var j=0;j<field.length;j++){
  193. if(field[j].checked){
  194. flag=false;
  195. break;
  196. }
  197. }
  198. if(flag){
  199. if(alt && alt.length>0){
  200. alert(alt);
  201. }else{
  202. alert(lable+"为必选项!");
  203. }
  204. return false;
  205. }
  206. }
  207. var selectValidate=frm.getElementsByTagName("selectValidate");
  208. for(var i=0;i<selectValidate.length;i++){
  209. var isValidate=selectValidate[i].getAttribute("isValidate");
  210. if(isValidate=="false") {
  211. continue;
  212. }
  213. var lable=selectValidate[i].getAttribute("lableText");
  214. var alt=textValidate[i].getAttribute("altText");
  215. var noValue=selectValidate[i].getAttribute("noValue");
  216. var field=document.getElementsByName(selectValidate[i].getAttribute("field"))[0];
  217. if(field.value==noValue){
  218. if(alt && alt.length>0){
  219. alert(alt);
  220. }else{
  221. alert(lable+"为必选项!");
  222. }
  223. return false;
  224. }
  225. }
  226. return true;
  227. }
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  • <HTML>
  • <HEAD>
  • <TITLE> New Document </TITLE>
  • <META NAME="Generator" CONTENT="EditPlus">
  • <META NAME="Author" CONTENT="">
  • <META NAME="Keywords" CONTENT="">
  • <META NAME="Description" CONTENT="">
  • <mce:script language="JavaScript" src="validate.js" mce_src="validate.js"></mce:script>
  • </HEAD>
  • <BODY>
  • <form onsubmit="return validate(this);">
  • <textValidate field="username" lableText="用户名" isValidate="false" min="5" max="10" dataType="account">
  • 用户名
  • <input name="username" type="text"><br>
  • <textValidate field="password" lableText="密码" isValidate="false" min="6" dataType="^[a-zA-Z0-9_]+$">
  • 密码
  • <input name="password" type="password"><br>
  • <textValidate field="email" lableText="Email" isValidate="false" dataType="email">
  • Email
  • <input name="email" type="text"><br>
  • <radioValidate field="sex" lableText="性别" isValidate="true">
  • 性别
  • <input name="sex" type="radio">男
  • <input name="sex" type="radio">女<br>
  • <radioValidate field="hunyin" lableText="婚姻状况" isValidate="true">
  • 婚姻状况
  • <input name="hunyin" type="radio">已婚
  • <input name="hunyin" type="radio">未婚<br>
  • 兴趣爱好
  • <radioValidate field="love" lableText="兴趣爱好" isValidate="true">
  • <input name="love" type="checkbox">篮球
  • <input name="love" type="checkbox">足球<br>
  • 所在城市
  • <selectValidate field="city" lableText="所在城市" isValidate="true" noValue="-1">
  • <select name="city">
  • <option value="-1">请选择...</option>
  • <option value="上海">上海</option>
  • <option value="北京">北京</option>
  • <option value="西安">西安</option>
  • </select>
  • <input type="submit">
  • </form>
  • </BODY>
  • </HTML>

简单的js表单验证框架的更多相关文章

  1. 一个自己实现的js表单验证框架。

    经常要做一些表单验证的操作,每次都是用现成的框架,比如jquery,bootstrap等的验证插件,虽然也很强大,也很好用,可就是用起来需要引入许多js库,还有里面功能太多,感觉不太符合自己的需求.最 ...

  2. 简单js表单验证

     简单js表单验证demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org ...

  3. ValidationSugar表单验证框架-支持ASP.NET MVC ASP.NET WebFroM

    ValidationSugar表单验证框架的优点: 1.支持javascript端和后端的双重验证 (前端目前依赖于jquery.validate.js,也可以自已扩展) 2.代码简洁 3.调用方便 ...

  4. angular js 表单验证

    <!doctype html> <html ng-app="myapp"> <head> <meta charset="UTF- ...

  5. Js表单验证控件-02 Ajax验证

    在<Js表单验证控件(使用方便,无需编码)-01使用说明>中,写了Verify.js验证控件的基本用法,基本可以满足大多数验证需求,如果涉及服务端的验证,则可以通过Ajax. Ajax验证 ...

  6. [JavaWeb基础] 015.Struts2 表单验证框架

    在web开发的过程中,我们经常要用到一些填写表单的操作,我们一般都要在提交表单信息的时候对表单的内容进行验证,struts2给我们提供了简单的实现接口,让我们可以很容易的对表单进行验证.下面讲解下最传 ...

  7. JS表单验证-12个常用的JS表单验证

    JS表单验证-12个常用的JS表单验证 最近有个项目用到了表单验证,小编在项目完结后的这段时间把常用的JS表单验证demo整理了一下,和大家一起分享~~~ 1. 长度限制 <p>1. 长度 ...

  8. js 表单验证控制代码大全

    js表单验证控制代码大全 关键字:js验证表单大全,用JS控制表单提交 ,javascript提交表单:目录:1:js 字符串长度限制.判断字符长度 .js限制输入.限制不能输入.textarea 长 ...

  9. jquery.validation.js 表单验证

    jquery.validation.js 表单验证   官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuer ...

随机推荐

  1. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛部分题解

    A 跳台阶 思路:其实很简单,不过当时直接dp来做了 AC代码: #define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include& ...

  2. ANT总结

    1 Ant是什么? Apache Ant 是一个基于 Java的生成工具.生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式).随着应用程序的生成 ...

  3. 【HDOJ5532】Almost Sorted Array(签到)

    题意:给定一个n个数的数列,问删掉一个数之后剩余部分是否可以单调不增或单调不减 n<=1e5,a[i]<=1e5 思路:预处理一下前后缀是否合法 #include<cstdio> ...

  4. [区别]APPlication,Session,Cookie,ViewState和Cache

    原文发布时间为:2009-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewS ...

  5. android的布局-----RelativeLayout(相对布局)

    学习导图 注:父容器定位的属性值只能是Boolean ,兄弟组件定位的属性值只能是ID 典型案例(梅花) <?xml version="1.0" encoding=" ...

  6. Chrome扩展修改页面代码执行环境的方法

    Chrome的扩展程序可以通过content scripts向页面中注入js代码,所注入的js代码能够对页面中所有的DOM对象进行操作.由于Chrome在js执行环境上对页面代码和content sc ...

  7. Android Studio查看其它APP的布局结构

    概述 日常使用别家的APP过程中,会遇到一些比较好看的布局,这时候我们就想学习一下别人的布局结构,以便参考. (1)手机连接电脑.设置手机为USB调试模式 (2)运行Android Studio,打开 ...

  8. Cryptography I 学习笔记 --- 分组密码

    1. 伪随机置换(PRF,Rseudo Random Permutaion)3DES/AES,K*X -> X(a. 可以高效计算,b. PRF函数是一个一一映射的函数,c. 存在有效的逆向算法 ...

  9. window下Apache-http-server(httpd-2.4.12)安装与配置

    由于Apache官网改变策略(2015年1月左右),官网不再提供Apache-http-server的windows的编译版本,但是提供了几个第三方的版本 http://httpd.apache.or ...

  10. .NET Core微服务 权限系统+工作流(一)权限系统

    一.前言 实际上权限系统老早之前我就在一直开发,大概在刚毕业没多久就想一个人写一个系统,断断续续一直坚持到现在,毕竟自己亲动手自写的系统才有收获,本篇仅介绍权限. 小小系统上不了台面,望各位大神勿喷. ...