表单的js验证框架,只提供提示信息及正则表达式即可自动验证及提示

本文介绍了一个基于jQuery的表单验证插件,该插件能够实现表单字段的自动验证及错误提示功能,减轻了开发者的工作负担。支持正则表达式验证、自定义验证逻辑,并集成了提交按钮事件监听。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于表单验证比较麻烦,所以写个jquery框架进行表单的自动验证及提示,以减少工作量:

1.jquery框架源码:

/*!
 * jquery.ckFormValidate-1.0 
 * 
 * Author: lifeng
 * Date: 2013-9-10 16:50:00
 */

;
(function($) {
	$.fn.validateForm = function(validateRules, functions) {
		var el = this;
		$(validateRules).each(function(i, item) {
			var e = el.find("#" + item.id);
			var $span_2 = $("<span>").addClass("prompt").html(item.preMsg);
			e.after($span_2);

			var $span_1 = $("<span>").addClass("mark");
			e.after($span_1);

			// 注册验证相关的事件,keyup(自动根据正则去验证)
			if (item.regex) {
				e.bind("keyup", function(event) {
					if (event.which == 9)
						return false;
					var result = validate(e, item.regex);
					error(e, result,item.msg);
					return false;
				});
			}

			// 无法通过正则表达式验证
			if (item.fun) {
				e.bind("keyup", function(event) {
					if (event.which == 9)
						return false;
					var result = item.fun();
					error(e, result,item.msg);
					return false;
				});
			}

		});

		// 注册提交按钮事件
		el.bind("submit", function() {
			var isvalid = true;
			$(validateRules).each(function(i, item) {
				var e = el.find("#" + item.id);
				if (item.regex) {
					var result = validate(e, item.regex);
					error(e, result,item.msg);
					isvalid = isvalid & result;
				}

				// 无法通过正则表达式验证
				if (item.fun) {
					var result = item.fun();
					error(e, result,item.msg);
					isvalid = isvalid & result;
				}

			});
			return isvalid ? true : false;
		});
	};

	function validate($obj, reg) {
		var val = $obj.val();
		// 进行正则表达式验证
		var regex = new RegExp(reg);
		return regex.test(val);
	}

	function error($obj, result,msg) {
		if (!result) {
			$obj.addClass("error");
			$obj.nextAll("span.prompt").css({
				"color" : "#ff0000"
			}).html(msg);
		} else {
			$obj.removeClass("error");
			$obj.nextAll("span.prompt").css({
				"color" : "none"
			}).html("<img src='../img/ok_ico.png'/>");
		}
	}
})(jQuery);
2.js书写格式:

//验证规则:
var validateRules=[
	{"id":"username","regex":"^[a-z]{4,20}$","msg":"用户名只能是a-z当中的字符,至少4位"},
	{"id":"userpass","regex":"^[a-zA-Z0-9]{4,20}$","msg":"密码只能是英文或数字,至少4位"},
	{"id":"repassword","msg":"两次密码不一致","fun":validateRepassword},
	{"id":"tel","regex":"(^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$)|(^((\([0-9]{3}\))|([0-9]{3}\-))?(1[358][0-9]{9})$)","msg":"请输入正确的联系电话!座机格式:0931-8440845"}
];

//无法通过正则表达式验证的逻辑判断,需要单独提供一个js判断方法,这个方法需要传入在验证规则
//该方法要求返回值必须是true,false;
function validateRepassword(){
	if($("#repassword").val()=="") return false;
	if($("#repassword").val()!=$("#userpass").val()) return false;
	return true;
}
			
$(function(){
	$("#loginForm").validateForm(validateRules);
});

其中id为文本框ID,regex为验证文本框的正则表达式,msg为输入错误时的提示信息;

如果需要特殊验证,使用fun,参数为调用的方法;

3.页面导入:

<script src="${pageContext.request.contextPath }/js/jquery-1.7.2.js" type="text/javascript" charset="utf-8"></script>
<script src="${pageContext.request.contextPath }/js/jquery.ckFormValidate-1.0.js" type="text/javascript" charset="utf-8"></script>
<script src="${pageContext.request.contextPath }/admin/user/js/user.js" type="text/javascript" charset="utf-8"></script>

4.页面表单:

<form id="loginForm" name="loginForm" class="form-horizontal" action="${pageContext.request.contextPath }/admin/user_operate.htm" method="post">
             <s:token />
             <div class="control-group" style="margin-top: 15px;">
                 <label  class="control-label">登录名称:</label>
                 <div class="controls">
                     <input type="text" onkeyup="valName()" name="user.userName" id="username" class="span6 typeahead">
                 </div>
             </div>
             <div class="control-group">
                 <label  class="control-label">登录密码:</label>
                 <div class="controls">
                     <input type="password" name="user.userPass" id="userpass" class="span6 typeahead">
                 </div>
             </div>
             <div class="control-group">
                 <label  class="control-label">确认密码:</label>
                 <div class="controls">
                     <input type="password" name="repassword" id="repassword" class="span6 typeahead">
                 </div>
             </div>
             <div class="control-group">
                 <label  class="control-label">联系电话:</label>
                 <div class="controls">
                     <input type="text" name="user.tel" id="tel" class="span6 typeahead">
                 </div>
             </div>
             <div class="control-group">
                 <label  class="control-label">备  注:</label>
                 <div class="controls">
                     <input type="text" name="user.remark" id="remark" class="span6 typeahead" maxlength="25">
                 </div>
             </div>
             <div class="control-group" style="text-align: left;">
                 <button type="submit" style="margin-left: 170px;" id="btnlogin" class="btn btn-primary">确认添加</button>
                 <button type="reset" class="btn btn-primary">重置</button>
                 <s:fielderror /><s:actionerror/>
             </div>
         </form>



JSValidation是强大灵活的客户端验证框架。在应用服务器或者开发框架提供验证的情况下,例如,普通的JSP, ASP, PHP等开发,以及一些提供验证支持的开发框架,如Tapestry, Velocity等,JSValidation提供了一种灵活的解决方案。与其他验证方式相比,它最大的优点在于独立与易于集成。纯JavaScript结构,可以很容易的集成到现有的应用中而论现有的应用是基于什么语言。将所有的表单验证集中管理,使得维护应用更加容易。简便的XML配置,易于扩充的验证方式(目前支持13种验证,囊括了大部分常用表单验证),使得JSValidation成为验证框架的首选。 <br>1. JSValidation是什么?<br>如首页所说,JSValidation是客户端表单验证框架,用在BS系统中,或者简单的网页系统中。表单验证在这些开发中很常见:新用户注册,需要校验某些字段;用户登陆,需要校验;等等。在这之前,页面开发者(JavaScript开发者)需要编写大量的JavaScript来与表单对象交互,并进行校验。常见的校验能为空,必须满足长度要求,必须为数字,必须为Email等等。根据一般的经验,如果表单中需要校验的域个数超过10个,开发过程就显得枯燥无味——多段重复的代码断重复,如果要求跨浏览器,更多的考虑因素使人头疼已。往往这个页面的验证能用于那个验证……虽然逻辑基本相同;但是在大多数情况下,出于种种原因,开发者宁愿(或者没办法)重新编写另一个页面的JavaScript代码。<br><br>JSValidation致力于改善这一过程。它将常见的校验(目前支持13种)封装起来,并创造性的采用xml来存贮表单验证信息,使得表单验证成为整个项目中最重要的环节,开发者只需要定义几个xml标记,就可以创建出复杂的验证策略,而用编写一行JavaScript代码。由于采用xml集中管理表单验证,使得表单验证在整个系统中的耦合度大大降低,并且易维护性大大提高。开发者更多的精力可以投入到业务相关的代码中。<br><br>恰恰相反,JSValidation内部结构虽然太简单(对用户而言),但是调用方式却极其简单,配置好环境后,只需要在需要验证表单的HTML标记中加上onsubmit="return doValidate('formId')"即可。这并没有改变开发者的习惯。<br><br>更为明显的优势是,JSValidation具备跨浏览器的能力。在目前的测试环境下,支持IE5及以上版本,Mozilla系列和支持DOM2模型的其他浏览器。你用再考虑在多浏览器下如何兼容,JSValidation帮你做到了这些。<br><br>2. JSValidation能做什么,能做什么?<br>如上所述,JSValidation能够校验表单。在系统复杂,表单复杂的场景下,JSValidation的优势更加突出。JSValidation目前能够完成客户端的13种验证如下:<br><br>取值非空 <br>必须为整数 <br>必须为双精度数 <br>必须为普通英文字符(字母,数字,下划线) <br>必须为中文字符 <br>最小长度 <br>最大长度 <br>是否为Email格式 <br>是否为日期格式(yyyy-mm-dd) <br>自定义的正则表达式 <br>整数范围(大于某数小于某数) <br>双精度数范围 <br>必须与某个域的值相同 <br>所有这些验证都在客户端完成。如果还有在此之外的验证需求,请告诉我们,我们会跟据需求程度开发出新的验证模型。<br><br>JSValidation能做的:<br><br>跨页面的验证。例如,A页面输入值,必须满足B页面中某一个值的条件,或者更多的页面。这个需求需要用户的反馈。如果在现实开发中这种需求很普遍,我们会考虑开发。目前的替代方式是,将A页面需要验证的值POST到B页面的一个Hidden Field,然后再使用已有的验证方式。 <br>与服务器交互验证。最常见的是输入用户名密码后登录。限于它的表示范围,JSValidation能完成这个工作。 <br>其他没有提到的,很希望你能告诉我们。 <br><br>请大家帮忙顶,这么好的东东能叫他沉了啊<br>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值