`
LD_21
  • 浏览: 129357 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Jquery Validate结合QTip实现绚丽的表单验证

    博客分类:
  • ui
ui 
阅读更多

相信做过前端开发的童鞋,一定都涉及到表单验证的模块设计,也定都会对Alert的粗暴提示厌恶至极。当然,我也不例外。一直期待着,一种比较优雅提示效果。

看到这,大家可能觉得Jquery Validate不是可以解决这个问题吗?不知,大家会不会觉得Jquery Validate的提示信息会占用相当的页面区域。在这个信息爆炸的时代,未免有些暴殄天物了,而且很难跟当前的页面效果融合到一起,很大程度影响的前端美观,降低了用户体验效果。直到前不久,为给一个Input框增加Title提示信息而认识了QTip2,感觉这个QTip的确是个强大的UI插件,仅短短的几句JS代码,就给Input框增添了美观的输入提示信息,不需要另外添加CSS,当然引入那是得必然的,而且还可以是一个对话框的样式,自然异常欣喜。

转念一想,要是它能够跟Jquery Validate插件结合起来那将是一件相当爽的事情了。于是乎,就研究了一番。

首先,简单先介绍一下Jquery Validate和QTip2吧。

 

需要引用的JS库:
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script src="js/jquery.metadata.js" type="text/javascript"></script>

 

需要验证的表单:
<form id="signupForm" method="get" action="">
<label for="firstname">Firstname</label>
	<input id="firstname" name="firstname" class="required" />
<label for="email">E-Mail</label>
	<input id="email" name="email" class="email required" />
<label for="password">Password</label>
	<input id="password" name="password" type="password" class="{required:true,minlength:5}" />
<label for="confirm_password">确认密码</label>
	<input id="confirm_password" name="confirm_password" type="password" class="{required:true,minlength:5,equalTo:'#password'}" />
<input class="submit" type="submit" value="Submit"/>
</form>

 

验证JS
方式一、直接加在Class里面
class="{required:true,minlength:5,messages:{required:'请输入内容'}}"
在使用equalTo关键字时, 后面的内容必须加上引号, 如下代码:
class="{required:true,minlength:5,equalTo:'#password'}"

方式二、使用关键字: meta(为了元数据使用其他插件你要包装 你的验证规则在他们自己的项目中可以用这个特殊的选项).
meta: "validate"
<input id="password" name="password" type="password" class="{validate:{required:true,minlength:5}}" />

方式三、使用meta关键字, 但class="{required:true,minlength:5}"将不起作用.
$.metadata.setType("attr", "validate");
这样可以使用validate="{required:true}"的方式,或者class="required".

 

校验规则: (根据当前的语言版本引入对应的message资源文件, 可以实现提示信息的国际化)

$(document).ready(function() {
	$("#signupForm").validate({
		rules: {
			firstname: "required",
			email: {
				required: true,  
				email: true
			},
			password: {  
				required: true,  
				minlength: 5
			},
			confirm_password: {  
				required: true,  
				minlength: 5,  
				equalTo: "#password"
			}
		},  
		messages: {
			firstname: "请输入姓名",
			email: {  
				required: "请输入Email地址",  
				email: "请输入正确的email地址"
			},
			password: {  
				required: "请输入密码",  
				minlength: jQuery.format("密码不能小于{0}个字符")
			},
			confirm_password: {  
				required: "请输入确认密码",  
				minlength: "确认密码不能小于5个字符",  
				equalTo: "两次输入密码不一致不一致"
			}
		} 
	});
});
//messages处,如果某个控件没有message,将调用默认的信息

 这样,就实现了一个简单的表单的验证的JS。

 对于,QTip可仅仅使用其的提示Tip功能即可。

引入的库, 当然这个必须在Jquery之前引入,毕竟是在其基础之上:
<script type="text/javascript" src="js/jquery.qtip.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/jquery.qtip.min.css" />

$(document).ready(function()
{
	// Match all <A/> links with a title tag and use it as the content (default).
	$('a[title]').qtip();
});
//如上, 的简单一句,就可以让A标签中Title信息, 以对话框的形式显示出来

 

QTip2频率较高的参数设置, 一般如下:
$.fn.qtip.defaults = {
   content: {
      text: true, 
      attr: 'title', 
      ajax: false,
      title: {
         text: false, 
         button: false
      }
   },
   position: {
      my: 'top left', 
      at: 'bottom right',
   },
   show: {
      event: 'mouseenter',
      solo: false,
      ready: false,
      modal: false
   },
   hide: {
      event: 'mouseleave'
   },
   style: 'ui-tooltip-default'
};

//当然,具体的还得是官方的API:
http://craigsworks.com/projects/qtip2/docs/

 这下,万事具备,需要是吧他们有机地结合起来!

引入JS库和CSS:
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/jquery-migrate-1.0.0.js"></script>
<script type="text/javascript" src="js/jquery.qtip.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>

<link rel="stylesheet" type="text/css" href="css/jquery.qtip.min.css" />

需要验证的Form:
<form id="MyForm" autocomplete="off" method="post">
	<input id="Field1" name="firstName1" type="text" class="testClass1" value="" tabindex="4" maxlength="20" /><br />
	<input id="Field2" name="firstName2" type="text" class="testClass2" value="" tabindex="4" maxlength="20" /><br />	
	<input id="Field3" name="firstName3" type="text" class="testClass3" value="" tabindex="4" maxlength="20" /><br />
	<br /><br />
	<input class="submit" type="button" id="submitClick" value="Submit order" />
</form>

核心的JS处理:
<script type="text/javascript" class="example">
$(document).ready(function(){
	$.validator.addMethod("cRequired", $.validator.methods.required, "Input name is required");  
	$.validator.addMethod("cMinlength", 
		function(value, element, params){
			if(value!=null && value!=""){
				if(value.length<params){
					return false;
				}
				return true;
			}else{			
				$(element).qtip('destroy');
				return true;
			}
		}, $.format("Please input at least {0} characters!"));  
	$.validator.addClassRules("testClass1", {cRequired:true, cMinlength:6});
	$.validator.addClassRules("testClass2", {cRequired:true});
	$.validator.addClassRules("testClass3", {cMinlength:6});
	$("#MyForm").validate({
		errorClass: "errormessage",
		onkeyup: false,
		errorClass: 'error',
		validClass: 'valid',
		errorPlacement: function(error, element)
		{
			var elem = $(element),
				corners = ['left center', 'right center'],
				flipIt = elem.parents('span.right').length > 0;

			// Check we have a valid error message
			if(!error.is(':empty')) {
				// Apply the tooltip only if it isn't valid
				elem.first().qtip({
					overwrite: false,
					content: error,
					position: {
						my: corners[ flipIt ? 0 : 1 ],
						at: corners[ flipIt ? 1 : 0 ],
						viewport: $(window)
					},
					show: {
						event: false,
						ready: true
					},
					hide: false,
					style: {
						classes: 'qtip-red' // Make it red
					}
				})

				// If we have a tooltip on this element already, just update its content
				.qtip('option', 'content.text', error);
			}

			// If the error is empty, remove the qTip
			else { elem.qtip('destroy'); }
		},
		success: $.noop,
		submitHandler:  function(form){
			alert("helloWork");
			alert($(form).html());//Jusr A Form
			form.submit();
		}
	});
	
	//Click Event
	$("#submitClick").click(function(){
		$("#MyForm").valid();
		$("#submitClick").die("click");
		return false;
	});
});
</script>

// elem.qtip('destroy');这句代码相当的有效, 如果你调用多个JS的验证, 
//可能会发生提示信息重叠的情况, 使用此句可阻断JS的继续验证.
当然, 对应页面元素需要过多重复的情况可使用如下的方式:

//Jquery Validate
$.validator.addMethod("cRequired", $.validator.methods.required, $.validator.messages.required); 
$.validator.addMethod("cMinlength", $.validator.methods.minlength, $.validator.messages.minlength);   
$.validator.addMethod("cRangelength", 
	function(value, element, params){ 
		value=$.trim(value);
		if(!isEmpty(value)){
			if(value.length<params[0] || value.length>params[1]){
				return false;	
			}
			return true;
		}else{
			$(element).qtip('destroy');
			return true;
		}
	}, $.validator.messages.rangelength);  
$.validator.addClassRules("cRequired", {cRequired: true});
$.validator.addClassRules("cMinlength", {cMinlength: 2});
$.validator.addClassRules("cRangelength", {cRangelength: [5,30]});

//这样, 只需在对应的表单Input的Class里面, 添加对应的rules即可. 
//如: cRequired , cMinlength , cRangelength 并且多个验证可叠加. 
//相当方便了吧.

 至此,一个比较优雅的表单验证,就此实现了!上图,看一下效果 :

V1

V2

 

3
1
分享到:
评论

相关推荐

    jquery validate 表单验证

    以上就是jQuery Validate的基本使用和核心概念,通过熟练掌握这些,你可以轻松实现高效且用户友好的表单验证。记住,始终要关注用户体验,避免过于繁琐的验证过程,同时确保数据安全性和准确性。

    jquery validate表单验证插件制作注册表单提交验证

    在本文中,我们将深入探讨如何使用jQuery Validate插件来创建一个功能完备的注册表单,进行数据提交前的验证。jQuery Validate是一个强大的JavaScript库,它为HTML表单提供了灵活且易于使用的验证规则,确保用户输入...

    jQuery validate框架的个性化验证

    通过以上介绍,我们可以看出 jQuery Validate 框架的强大之处,它提供了丰富的验证功能,允许开发者根据项目需求进行高度自定义,从而实现个性化的表单验证。在实际开发中,结合 CSS 和 JavaScript,可以打造出美观...

    jquery validate表单验证插件手机注册表单验证代码

    jQuery Validate插件作为一款强大的JavaScript验证工具,广泛应用于各种表单验证场景,包括手机注册表单验证。本文将深入探讨jQuery Validate插件的使用方法,以及如何将其应用于手机注册表单的验证。 一、jQuery ...

    jQuery Validate插件实现表单验证

    jQuery Validate插件是一个非常流行的JavaScript库,它在客户端实现表单验证方面提供了广泛的功能。通过利用这个插件,开发者可以轻松地在用户的浏览器端对表单数据进行检查,以确保输入的数据符合特定的格式和规则...

    jQuery Validate表单验证插件实现代码

    以下是对jQuery Validate表单验证插件实现代码的详细解析: 1. **验证准备**: 在开始编写验证逻辑之前,你需要创建一个包含待验证表单元素的HTML结构。这通常包括输入字段、标签和其他必要的表单元素。同时,为了...

    jquery.validate.js jquery表单验证

    `jQuery Validate` 是一个流行的 JavaScript 库,用于在前端实现高效、灵活的表单验证。这个库是 jQuery 生态系统的一部分,它简化了对 HTML 表单数据的验证过程,提高了用户体验,确保用户输入的数据在提交到服务器...

    jquery.validate.js表单验证.pdf

    jquery.validate.js是一个强大的jQuery插件,可以帮助开发者快速实现表单验证。以下是该文件中提及的关键知识点: 1. jquery.validate.js的引入:文件提到了引入jquery.validate.js的方法,需要先引入jquery.js,...

    jQuery Validate表单验证插件

    jQuery Validate插件极大地简化了前端表单验证的实现,使得开发者能够专注于构建功能丰富的交互式Web应用,而无需担心数据验证的复杂性。通过熟练掌握其核心功能和自定义规则,您可以创建高效且用户体验良好的表单...

    jQuery validate 表单验证源码

    jQuery validate 是一个非常流行的JavaScript库,用于在客户端进行表单验证。它简化了HTML表单的验证过程,提供了丰富的选项和方法来定制验证规则。在ASP.NET开发中,结合jQuery validate,可以创建用户友好的、交互...

    jQuery Validate插件验证表单小练

    jQuery Validate 插件是Web开发中广泛使用的工具,主要用于实现前端表单验证,它极大地简化了用户输入数据的检查过程,提供了丰富的验证规则和自定义方法。在这个“jQuery Validate插件验证表单小练”中,我们将深入...

    jquery.validate表单验证密码完整例子(带密码强度显示)

    总的来说,`jQuery Validate`的这个实例提供了一个实用的方法来增强表单验证体验,特别是对于密码安全性的强调。它不仅确保了用户输入的有效性,还鼓励他们创建更强大的密码,从而提高了整体的网络安全。通过理解并...

    jQuery带Tips动画提示通用表单验证插件下载(jquery validate),动画效果漂亮

    jQuery Validate插件正是这样一个强大的工具,它提供了一种优雅的方式来实现表单验证,而且具备动态提示的动画效果,使得用户界面更加友好。本文将深入探讨jQuery Validate插件的使用方法、功能特性以及如何创建带...

    解决jquery validate remote 为什么只验证一次

    解决jquery validate remote 只验证一次的问题

    jquery validate 验证手册

    《jQuery Validate验证手册》是针对JavaScript库jQuery的一个插件,主要功能是提供强大的表单验证功能,帮助开发者创建用户友好的、功能丰富的交互式表单。这个插件基于jQuery库,利用JavaScript的强大功能,简化了...

    jquery validate 验证自定义样式

    7. **自定义提交按钮**:如果你希望在表单验证失败时禁用提交按钮,可以使用`submitHandler`回调函数: ```javascript submitHandler: function(form) { // 提交表单前的逻辑,如发送AJAX请求 form.submit(); }...

    Jquery validate表单验证Demo下载

    在本文中,我们将深入探讨jQuery Validate插件,这是一种强大的JavaScript工具,用于实现高效且易于定制的表单验证。这个插件极大地简化了在网页中创建用户注册和其他表单提交时的验证过程。以下是对该插件及其应用...

    jquery validate 信息气泡提示

    总之,通过 jQuery Validate 和 PoshyTip 的结合,我们可以构建一个功能强大且用户体验良好的表单验证系统,有效地提示用户修正错误,提高表单填写的准确性。同时,PoshyTip 提供的丰富配置选项使得提示信息的样式和...

    jquery validate的漂亮css样式验证

    `jQuery Validate`结合自定义CSS样式,可以让表单验证既实用又美观,提供更好的用户体验。 在"jquery validate的漂亮css样式验证"这个主题中,我们主要关注的是如何将`jQuery Validate`与CSS样式相结合,以创建一个...

    jquery表单验证实例,对数字,字数,必填项等校验

    `jQuery Validate`是基于`jQuery`的一个插件,专门用于实现客户端的表单验证,它可以高效且易于地实现对数字、字数、必填项等各种类型的验证。 在"jquery表单验证实例,对数字,字数,必填项等校验"这个项目中,...

Global site tag (gtag.js) - Google Analytics