前言
在一个项目中,表单验证是必不可少的。之前对于这部分有点生疏,这次把我知道的几种方式都说明一遍,并且尽可能的给出完整代码。
一、使用js+ajax进行验证
使用js来验证,最主要的问题是:如何进行交互。比如,我在进行用户名验证时,当输入框获取焦点时,进行友好提示“5-25个字符,一个中文为2个字符,推荐使用中文会员名“;当用户输入键盘弹起时,实时记录输入字符的个数;当输入框失去焦点时,显示最终的验证信息:“含非法字符”、“不能为空”等。
完整代码如下:
1 |
|
二、使用HTML5的自带表单验证功能+ajax
前提:使用HTML5自带表单验证一般是使用正则来规定表单格式,而使用ajax一般是验证用户名有没有重复之类的情况。因此,在表单验证过程中,这两者都需要。
验证发现,在表单中使用button按钮提交表单,不能触发HTML5中自带的表单验证功能。因此,想要使用HTML5的自带表单验证功能,必须使用submit按钮提交表单。
接着发现直接使用submit按钮提交表单会直接提交表单不会触发ajax,因此需要想办法阻止submit按钮的自动提交表单事件。
在JavaScript中,这两种可以阻止标签的默认行为。
1 | 1. e.preventDefault(); |
经过验证,发现以上两种都可行!
完整代码如下:
1 |
|
表单验证所涉及的相关属性和方法
属性(方法) | 描述 |
---|---|
pattern | 规定用于验证输入字段的模式(一般用正则规定)。 |
required | 规定必需在提交之前填写输入字段(设置不能为空)。 |
oninvalid | input元素内的值为无效值时触发的事件 |
autocomplete | 当用户在自动完成域中开始输入时,浏览器应该在该域中显示填写的选项。值为true,表示浏览器会自动显示选项,值为false则不可以。 |
novalidate | 规定在提交表单时不应该验证 form 或 input 域。 |
注意:
<input type="email">
自带格式验证,因此不必像其它input类型那样使用正则来验证。
三、使用jQuery Validate验证
jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。
1.展示一个最简单的例子。
1)引入文件
1 | <script src="js/jquery-2.2.3.min.js"></script> |
2)进行验证
1 | $().ready(function() { |
3)提交事件
1 | $.validator.setDefaults({ |
2.通过一个完整的例子,来说明jQuery Validate的使用方法。
默认校验规则
序号 | 规则 | 描述 |
---|---|---|
1 | required:true | 必须输入的字段。 |
2 | remote:”check.php” | 使用 ajax 方法调用 check.php 验证输入值。 |
3 | email:true | 必须输入正确格式的电子邮件。 |
4 | url:true | 必须输入正确格式的网址。 |
5 | date:true | 必须输入正确格式的日期。日期校验 ie6 出错,慎用。 |
6 | dateISO:true | 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 |
7 | number:true | 必须输入合法的数字(负数,小数)。 |
8 | digits:true | 必须输入整数。 |
9 | creditcard: | 必须输入合法的信用卡号。 |
10 | equalTo:”#field” | 输入值必须和 #field 相同。 |
11 | accept: | 输入拥有合法后缀名的字符串(上传文件的后缀)。 |
12 | maxlength:5 | 输入长度最多是 5 的字符串(汉字算一个字符)。 |
13 | minlength:10 | 输入长度最小是 10 的字符串(汉字算一个字符)。 |
14 | rangelength:[5,10] | 输入长度必须介于 5 和 10 之间的字符串(汉字算一个字符)。 |
15 | range:[5,10] | 输入值必须介于 5 和 10 之间。 |
16 | max:5 | 输入值不能大于 5。 |
17 | min:10 | 输入值不能小于 10。 |
validate可选项
可选项 | 描述 |
---|---|
rules | 自定义规则,key:value 的形式,key 是要验证的元素,value 可以是字符串或对象。 |
messages | 自定义的提示信息,key:value 的形式,key 是要验证的元素,value 可以是字符串或函数。 |
完整代码(菜鸟驿站中的例子):
1 |
|