9.5.2 高级验证

正如9.4.2节介绍的,有很多事情不能够通过基本验证方法来实现,例如为不同的验证问题指定不同的错误消息,或者要求输入特定数目的字符。在这些情况下,我们需要使用Validation插件的高级方法来创建验证规则和错误消息。

要开始使用高级验证,需要为表单的email字段添加两个验证规则和两个不同的错误消息。

1.在靠近文件顶部的JavaScript代码中找到$('#signup').validate();这一行,并像下面这样编辑它:


$('#signup').validate({

});//end validate()


换句话说,在validate()的圆括号之间添加开始花括号和结束花括号,在两个花括号之间添加两个空行,并且在末尾添加一条JavaScript注释。这条注释表示validate()函数的结束。我们将很快看到很多带有花括号和圆括号的脚本,因此,要记清楚哪个花括号是干什么的很难。这条注释可以帮助我们避免搞混淆了,但是,像代码中的所有注释一样,它是可选的。

接下来,我们将创建一个基本的结构来添加验证规则。

2.在(花括号之间的)空行中添加最后一步,输入:


rules:{

}//end rules


要使得代码容易阅读,你可能还想在规则和}的前面放置两个空格。缩进这些行,可以从视觉上更清楚地表示这些行是validate()函数的一部分。

这段代码创建了一个空白对象,我们用特定的字段名和验证方法来填充它。此外,一条JavaScript注释表示rules对象的结束。接下来,我们将为email字段添加规则。

3.编辑validate()函数,以使它看上去如下所示(改变的部分用粗体显示):


$('#signup').validate({

rules:{

email:{

required:true,

email:true

}

}//end rules

});//end validate()


这里,我们将添加另外一个对象文本。第一部分email是想要验证的字段名,并且和HTML中的字段名匹配。接下来,指定了两个验证方法,字段是必需的(意味着如果访问者想要提交表单则必须填写它),并且输入必须匹配一个E-mail地址的形式。尽早测试,并且经常测试,这对任何程序员来说都是金玉良言。在继续进行之前,先进行测试以确保这段脚本有效。

4.保存文件,在Web浏览器中预览,并且尝试提交表单。

你将会看到该插件针对遗漏信息的默认错误消息:“This field is required.”。单击该字段并且输入几个字母。错误消息变为“Please enter a valid email address”(当访问者在一个email字段输入的不是一个E-mail地址的时候,这是该插件所显示的标准消息)。如果你不想看到任何错误消息,那么,查看下你的代码并且将其与上面的步骤3进行比较。

现在,我们将为这个字段添加定制的错误消息。

5.返回文本编辑器。在rules对象的结束花括号的后面(但是在//end rules注释的前面)添加一个逗号,然后输入:


messages:{

}//end messages


这段代码表示另一个JavaScript对象,名为messages。这个对象将包含想要添加给表单字段的任何错误消息。另外,末尾的注释//endmessages是可选的。现在,我们将为email字段添加实际的错误消息。

6.编辑validate()函数以便它看起来如下所示(添加的部分用粗体显示):


1$('#signup').validate({

2 rules:{

3 email:{

4 required:true,

5 email:true

6}

7},//end rules

8 messages:{

9 email:{

10 required:"Please supply your e-mail address.",

11 email:"This is not a valid e-mail address."

12}

13}//end messages

14});//end validate(),


保存页面并且在Web浏览器中预览。尝试不填写email地址字段而提交表单。将会得到一条“Please supply your e-mail address.”错误消息。现在,在email字段中输入类似“hello”的内容,并尝试提交表单。这次将会得到“This is not a valid e-mail address”错误消息。

如果没有得到任何错误消息,并且相反,得到了“Form Processed!”页面,那么在代码的某处有一个JavaScript错误。最可能的问题是漏掉了rules对象后面的逗号(参见第7行),或者在email message对象中漏掉了逗号(参见第10行)。

现在,应该为两个密码字段添加验证规则了。

7.编辑rules对象以便它看上去如下所示(修改的地方用粗体显示):


1 rules:{

2 email:{

3 required:true,

4 email:true

5},

6 password:{

7 required:true,

8 rangelength:[8,16]

9},

10 confrm_password:{

11 equalTo:’#password'

12}

13},//end rules


不要漏掉了第5行的逗号,它是必需的,用来分隔email规则和password规则。

第一组规则应用于第一个密码字段。它使得字段成为必需的并且要求字段至少有8个字符长度但不多于16个字符长度。第二条规则应用于email确认字段,并且要求其内容和第一个密码字段中的值相匹配(关于这些规则如何工作的细节可以参考9.4.3节)。

提示:保存文件并在教程中的每步之后测试它,这是个好办法。通过这种方法,如果验证停止工作,就可以知道在哪个步骤中出错。

这些规则也需要相应的错误消息。

8.编辑messages对象,使其看上去如下所示(修改的部分用粗体显示):


1 messages:{

2 email:{

3 required:"Please supply an e-mail address.",

4 email:"This is not a valid email address."

5},

6 password:{

7 required:'Please type a password',

8 rangelength:'Password must be between 8 and 16 characters long.’

9},

10 confrm_password:{

11 equalTo:'The two passwords do not match.’

12}

13}//end messages


不要忘记了第5行的逗号。

现在,应该能够熟练地添加规则和错误消息了。接下来,我们将为复选框和单选按钮添加验证。