jQuery Validator 是一个简单易用、功能强大的基于jQuery的表单验证框架。其Github开源网址为:https://github.com/CodePlayer/jQuery-Validator。
jQuery Validator 初体验
在学习之前,为了使稍后的讲解更加形象、便于理解,我们先通过几个示例来直观地感受一下jQuery Validator的魅力。以下列常见的HTML表单为例(只是演示,请先忽略表单字段的业务逻辑合理性):
我们需要在表单提交时进行表单校验,则可以编写如下代码:
你还可以参考以下示例:
当然,jQuery Validator的强大功能无法简单地通过几个例子就能够全部展现。
jQuery Validator 快速入门
"磨刀不误砍柴工"。在使用框架之前,大致了解框架的设计理念是很有必要的,这样可以让您在使用过程中少走很多弯路。
所谓"校验",就是判断指定的输入是否符合条件,并根据判断结果进行对应的提示或操作。
通过总结可以发现,我们所有的输入校验大致可以分为以下几种:
非空校验:输入不能为空。
长度校验:输入必须满足指定的长度条件。例如,密码的长度为6~16位。
范围校验:输入的值必须满足指定的范围条件。例如,年龄必须在18~100岁之间。
比较校验:输入必须满足与其他相关(表单)输入的特定条件。例如,再次输入密码必须与原密码一致,结束时间必须大于开始时间。
常规格式校验:输入必须满足指定的格式。例如,价格必须为数字,姓名必须为中文,手机号码格式,邮箱格式,时间格式……
特殊校验:输入必须满足某些特殊的业务逻辑需要。例如,用户名必须唯一(通过远程AJAX校验)。
当然,有些时候一个输入可能需要多种校验方式来组合校验。比如:我们要求输入的用户名必须非空(非空校验),必须以英文字母开头(格式校验),且必须是6~16位(长度校验);我们要求输入的商品价格必须非空(非空校验),必须是两位小数以内的数字(格式校验),且必须大于0、小于或等于10000(值的范围校验);我们要求输入的结束时间必须是"yyyy-MM-dd"格式(格式校验),且不能小于开始时间(值的比较校验)……
基于上述分析,我们可以如下描述表单验证框架的大致工作过程:定义校验器->定义校验规则->对指定的输入执行校验->根据校验结果进行提示或操作。
定义通用的校验器
校验器应该是通用(可复用)的,不依赖于任何特定的输入,每个校验器只负责一种校验。例如:非空校验器只校验非空,长度校验器只校验长度,范围校验器只校验范围……
定义校验规则
将一个或多个校验器组合成一种校验规则。还是以商品价格为例(非空、两位以内的数字、大于0且小于或等于10000),我们可以定义一个名为"price"的校验规则:
校验规则中还可以指定一些特殊的属性,以实现一些特定的功能,请参考左侧菜单中的【特殊规则属性】。
对输入执行校验
为输入指定对应的校验规则,并在指定时刻执行校验。jQuery Validator提供了多种执行校验的方式:
根据校验结果进行提示
如果内置的校验器就能满足你的需求,那么你可以不用定义任何错误提示信息,因为内置校验器已经能够完成这项工作。以我们刚才定义的"price"规则为例:
聪明的你应该注意到了,上面的提示消息中有两个占位符{label}和{expected}。没错!为了实现提示消息的复用,而不与某个表单元素的名称(比如"用户名")耦合,框架支持带占位符的提示消息并自动解析。一般情况下,你只需要关注{label},因为它表示具体的表单元素的名称({expected}是验证器内置的,框架也支持自定义内置占位符)。
jQuery Validator怎么知道当前正在校验的表单元素的名称是什么呢?这个当然得需要你来配合。默认情况下,框架会依次通过以下方式获取表单元素的名称,并以优先获取到的为准:
当然,你也可以重写getLabel()
方法来自定义获取方法:
如果你不想使用框架自带的提示消息,你也可以在定义规则时,自定义对应的提示消息,且同样都支持占位符:
如果系统找不到任何自定义或内置的提示信息,则提示v.messages["default"]
的字符串值(默认为{label}的格式不正确!
)。
若想了解关于内置提示信息及自定义提示信息的更多内容,请点击 这里。
在上面我们提到过,jQuery Validator的基本使用流程为:定义校验器->定义校验规则->对指定的输入执行校验->根据校验结果进行提示或操作。
不过,jQuery Validator已经完成了第一步和第四步,其内置的校验器已经能够实现几乎所有的校验功能,连第二步jQuery Validator都已经为你内置定义了一些常用的校验规则。因此,在实际开发过程中,你要做的仅仅是:
定义额外的校验规则(如果框架内预定义的校验规则仍然无法满足你的话)。
对指定的输入执行校验(Just do it!)。
更上一层楼
当你看到这里时,你应该初步掌握了jQuery Validator的基本使用技巧。不过,仅仅掌握这些,你还无法灵活地运用该框架,尤其是当你的验证需要比较复杂时。至少,你应该认真了解每一个内置的表单验证器,因为它是表单验证框架的核心所在。jQuery Validator内置验证器的功能强大,也是与其他表单验证框架的最大区别之一。
如果你想"更上一层楼",请参考jQuery Validator的参考文档。
此外,如果您有任何意见或建议,也欢迎您在评论中或在Github上随时进行反馈。
0 条评论
撰写评论