首先说一下,这个例子不是我原创的,例子本身来自《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定义的模式(如果有的话),如果不匹配,就以一定的方式来提醒用户。
整个验证器的思路非常清晰,代码也很简洁,主要是通过自定义规则可以完成任意的验证方式。
分享到:
相关推荐
高级的javascript表单验证, 正则及常用验证 制作带关闭按钮的浮动窗口 制作全选全不选效果效果 DIV提示效果的表单验证
"JavaScript高级程序设计" JavaScript是一种高级的编程语言,它的出现改变了Web开发的格局。 JavaScript的主要目的是处理一些输入的有效性验证,而在此之前,这个工作是留给诸如Perl之类的服务器端语言来完成的。...
通过Date对象获得当前的系统时间对象time,定义数组内容为星期日到星期六,利用time.getDay()方法得到一个星期中的第几天,与数组的索引对应
《JavaScript高级教程》这本书深入探讨了这一动态语言的核心概念和技术,旨在帮助开发者提升技能,掌握JavaScript的高级用法。 首先,JavaScript是一种解释型的、基于原型的、动态类型的脚本语言。这意味着它不需要...
JavaScript是Web开发中不可或缺的一部分,尤其在客户端验证和创建页面特效方面发挥着重要作用。北大青鸟的这门课程,"JavaScript客户端验证和页面特效制作",旨在深入讲解这两个主题,帮助学员掌握实际开发中的关键...
JavaScript验证是Web开发中不可或...总之,JavaScript验证是一个广泛的话题,涵盖了许多前端开发的基础和高级技术,对于保证用户体验和数据安全至关重要。实际学习时,应结合具体的实例和代码实践,以加深理解和掌握。
而在高级特效制作中,JavaScript可以实现诸如动画、滑动效果、下拉菜单等丰富的交互功能,增强网页的视觉吸引力。 JavaScript的灵活性和强大的功能使其成为现代Web开发不可或缺的一部分。随着技术的发展,...
JavaScript是Web开发中不可或缺的一部分,尤其在用户交互和数据验证方面。"JavaScript表单验证大全"这个主题涵盖了许多关于如何使用JavaScript有效地验证用户输入的重要概念。表单验证是确保用户提交的数据符合预设...
#### 第七章:表单验证的高级特效 ##### 一、实现简单的省市级联功能 通过监听选择框的改变事件,动态加载下一级数据来实现省市区级联效果。 ##### 二、实现简单的省市级联的效果 具体实现方式是先定义一个包含...
"JavaScript高级编程"这本书深入浅出地介绍了这一语言的各个方面,旨在帮助初学者和有经验的开发者进一步提升技能。以下是对该书内容的详细概述: 1. **基础语法**:JavaScript的基础始于变量、数据类型(包括原始...
"笨阿猪高级表单验证.mxp"文件很可能是Dreamweaver的插件安装包,安装后,用户可以在Dreamweaver的环境中直接使用这些高级验证功能,简化开发流程,提高工作效率。如果你是Dreamweaver的使用者,这个资源将非常有...
JavaScript是一种广泛使用的客户端脚本编程语言...JavaScript的核心特性包括对表单验证、页面内容动态修改、事件处理等的高效支持,它为Web开发者提供了强大的客户端编程能力,极大地提高了Web应用的交互性和用户体验。
在项目案例中,你可以通过编写JavaScript函数来实现这些验证规则,并利用事件监听器将验证逻辑与用户的交互行为绑定。 其次,页面特效是提升网页视觉吸引力的有效手段。JavaScript可以用来创建动态效果,如滑动菜单...
JavaScript的主要功能是在用户的浏览器端运行,实现动态交互,如表单验证、页面动画、AJAX异步通信以及构建复杂Web应用程序。W3C的规范确保了JavaScript在不同浏览器中的兼容性和一致性,使得开发者能够编写出跨平台...
此外,通过引入正则表达式等高级技术,还可以进一步提高验证的精确度和灵活性。这些技术不仅提高了用户体验,也增强了应用程序的安全性和可靠性。希望本文能帮助读者更好地理解和应用JavaScript表单验证技术。
本文将详细介绍如何在JavaScript中实现一个简单的表单验证,包括基本的验证逻辑和一些高级技巧。我们将通过实例代码来展示如何构建健壮的前端数据校验。 通过本文的介绍,你应该能够理解并实现基本的JavaScript表单...
### JavaScript表单验证详解 ...本文介绍的验证方法涵盖了基本到高级的需求,为Web应用程序的安全性和用户体验提供了坚实的保障。在实际项目中灵活运用这些技术,可以显著提高数据处理的效率和准确性。