`
abruzzi
  • 浏览: 449345 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JavaScript高级验证器

阅读更多

首先说一下,这个例子不是我原创的,例子本身来自《JavaScript权威指南》(4th Edition),之所以放在这里,实在是因为这个js脚本太牛B了,如果有正则表达式的基础,你可以很轻松的实现各种各样的js验证器,这个js脚本只是提供一个通用的验证框架,具体的验证规则,以及不能通过验证的时候所产生的动作完全可以定制。好了,言归正传。

 

首先,给需要验证的表单(Form)中的需要加入验证器的input控件加入一定的验证规则,这个例子中是通过给Input控件加入一个自定义的属性来实现的,如下例:

<script src="validate.js" ></script>
<style>
	input.invalid{background: #faa;}
	input.valid{background: #afa;}	
</style>

<form>
	name : <input type="text" name="name" required><br>
	email: <input type="text" name="email" pattern="^\s*\w+@\w+\.\w+\s*$"><br>
	zipcode : <input type="text" name="zipcode" pattern="^\s*\d{5}\s*$"><br>
	unvalidate : <input type="text"><br>
	
	<input type="submit" value="submit query">
</form>

 当你看到required或者pattern时,不要慨叹自己才疏学浅,因为这两个属性是自定义的。从而实现了js脚本跟html的分离。下面是这个牛B的JavaScript脚本:

(
function(){
	if(window.addEventListener) window.addEventListener("load", init, false);
	else if(window.attachEvent) window.attachEvent("onload", init);
		
	function init(){
		for(var i = 0;i < document.forms.length;i++){
			var f = document.forms[i];
			var needsValidation = false;
			for(var j = 0;j < f.elements.length; j++){
				var e = f.elements[j];
				if(e.type != "text") continue;
				var pattern = e.getAttribute("pattern");
				var required = e.getAttribute("required") != null;
				
				if(required && !pattern){
					pattern = "\\S";
					e.setAttribute("pattern", pattern);	
				}	
				
				if(pattern){
					e.onchange = validateOnChange;
					needsValidation = true;
				}
			}
			if(needsValidation) f.onsubmit = validateOnSubmit;	
		}
	}
	
	function validateOnChange(){
		var textfield = this;
		var pattern = textfield.getAttribute("pattern");
		var value = this.value;
		
		if(value.search(pattern) == -1) textfield.className = "invalid";
		else textfield.className = "valid";	
	}
	
	function validateOnSubmit(){
		var invalid = false;
		for(var i = 0; i < this.elements.length;i++){
			var e = this.elements[i];
			if(e.type == "text" && e.onchange == validateOnChange){
				e.onchange();	
				if(e.className == "invalid") invalid = true;
			}
		}
		if(invalid){
			alert(	"The form is incompletely or incorrectly filled out.\n"+
					"Please correct the hightlighted fields and try again.");
			return false;
		}	
	}	
}
)();

 主题的思想是这样,先定义合法和非法时需要做的动作(在这个例子中,只是简单的将input框的背景色改变而已,这个可以通过CSS轻易实现,你也可以弹出警告等来提示用户),然后,当框中的内容改变时,就尝试去匹配这个input定义的模式(如果有的话),如果不匹配,就以一定的方式来提醒用户。

 

整个验证器的思路非常清晰,代码也很简洁,主要是通过自定义规则可以完成任意的验证方式。

分享到:
评论
1 楼 abruzzi 2008-12-10  
自己小"顶"一下,如此经典的验证器,哈哈

相关推荐

    高级的javascript表单验证

    高级的javascript表单验证, 正则及常用验证 制作带关闭按钮的浮动窗口 制作全选全不选效果效果 DIV提示效果的表单验证

    JavaScript高级程序设计.pdf

    "JavaScript高级程序设计" JavaScript是一种高级的编程语言,它的出现改变了Web开发的格局。 JavaScript的主要目的是处理一些输入的有效性验证,而在此之前,这个工作是留给诸如Perl之类的服务器端语言来完成的。...

    javascript表单验证的高级特效

    通过Date对象获得当前的系统时间对象time,定义数组内容为星期日到星期六,利用time.getDay()方法得到一个星期中的第几天,与数组的索引对应

    javascript高级教程.pdf

    《JavaScript高级教程》这本书深入探讨了这一动态语言的核心概念和技术,旨在帮助开发者提升技能,掌握JavaScript的高级用法。 首先,JavaScript是一种解释型的、基于原型的、动态类型的脚本语言。这意味着它不需要...

    北大青鸟 JavaScript客户端验证和页面特效制作

    JavaScript是Web开发中不可或缺的一部分,尤其在客户端验证和创建页面特效方面发挥着重要作用。北大青鸟的这门课程,"JavaScript客户端验证和页面特效制作",旨在深入讲解这两个主题,帮助学员掌握实际开发中的关键...

    javascript验证

    JavaScript验证是Web开发中不可或...总之,JavaScript验证是一个广泛的话题,涵盖了许多前端开发的基础和高级技术,对于保证用户体验和数据安全至关重要。实际学习时,应结合具体的实例和代码实践,以加深理解和掌握。

    JavaScript客户端验证和高级特效制作.doc

    而在高级特效制作中,JavaScript可以实现诸如动画、滑动效果、下拉菜单等丰富的交互功能,增强网页的视觉吸引力。 JavaScript的灵活性和强大的功能使其成为现代Web开发不可或缺的一部分。随着技术的发展,...

    javaScript表单验证大全

    JavaScript是Web开发中不可或缺的一部分,尤其在用户交互和数据验证方面。"JavaScript表单验证大全"这个主题涵盖了许多关于如何使用JavaScript有效地验证用户输入的重要概念。表单验证是确保用户提交的数据符合预设...

    JavaScript高级编程

    "JavaScript高级编程"这本书深入浅出地介绍了这一语言的各个方面,旨在帮助初学者和有经验的开发者进一步提升技能。以下是对该书内容的详细概述: 1. **基础语法**:JavaScript的基础始于变量、数据类型(包括原始...

    DW笨阿猪高级表单验证

    "笨阿猪高级表单验证.mxp"文件很可能是Dreamweaver的插件安装包,安装后,用户可以在Dreamweaver的环境中直接使用这些高级验证功能,简化开发流程,提高工作效率。如果你是Dreamweaver的使用者,这个资源将非常有...

    javascript高级编程.pdf

    JavaScript是一种广泛使用的客户端脚本编程语言...JavaScript的核心特性包括对表单验证、页面内容动态修改、事件处理等的高效支持,它为Web开发者提供了强大的客户端编程能力,极大地提高了Web应用的交互性和用户体验。

    javascript客户端验证和页面特效制作项目案例

    在项目案例中,你可以通过编写JavaScript函数来实现这些验证规则,并利用事件监听器将验证逻辑与用户的交互行为绑定。 其次,页面特效是提升网页视觉吸引力的有效手段。JavaScript可以用来创建动态效果,如滑动菜单...

    W3C JavaScript 高级教程

    JavaScript的主要功能是在用户的浏览器端运行,实现动态交互,如表单验证、页面动画、AJAX异步通信以及构建复杂Web应用程序。W3C的规范确保了JavaScript在不同浏览器中的兼容性和一致性,使得开发者能够编写出跨平台...

    javascript表单验证使用示例(javascript验证邮箱).docx

    此外,通过引入正则表达式等高级技术,还可以进一步提高验证的精确度和灵活性。这些技术不仅提高了用户体验,也增强了应用程序的安全性和可靠性。希望本文能帮助读者更好地理解和应用JavaScript表单验证技术。

    掌握JavaScript表单验证:构建健壮的前端数据校验

    本文将详细介绍如何在JavaScript中实现一个简单的表单验证,包括基本的验证逻辑和一些高级技巧。我们将通过实例代码来展示如何构建健壮的前端数据校验。 通过本文的介绍,你应该能够理解并实现基本的JavaScript表单...

    javascript表单验证大全

    ### JavaScript表单验证详解 ...本文介绍的验证方法涵盖了基本到高级的需求,为Web应用程序的安全性和用户体验提供了坚实的保障。在实际项目中灵活运用这些技术,可以显著提高数据处理的效率和准确性。

Global site tag (gtag.js) - Google Analytics