2012-10-26 57 views
0
//html 
<form id="idform"> 
    <input id="id_t_email"> 
    <input id="id_p_password" type="password"> 
</form> 

//js 
$('#idform').validate(); 
$('#id_t_email').rules('add',{email:true}); 
$('#id_p_password').rules('add',{required:true}); 

我遇到一个奇怪的问题。
作为上面的代码,应该只对'id_t_email'进行“email”验证,并且只对id_p_password进行“必需”验证。
但实际上,“id_p_password”和“id_t_email”同时通过“email”和“required”验证。
此外,如果我叫是不是Jquery.validate.rules(“add”,{.....})被窃听?

$('#id_t_email').rules('add',{email:true}); 
$('#id_p_password').rules('add',{email:false}); 

然后各个领域的规则“电子邮件”,将删除
(即“id_t_email”将不再被“电子邮件”验证)
那是一个关键的错误?

+0

那么,我研究了源代码后解决了这个问题。 主要问题是:所有$ .validate字段都需要自己的“名称”。 这个插件使用element.name作为所有验证字段的索引 也就是说,如果一个元素没有name属性并且会有一些奇怪的问题。 –

回答

0

.validate()插件要求每个input包含name属性...

<input id="id_t_email" name="id_t_email" type="text" /> 
<input id="id_p_password" name="id_p_password" type="password" /> 

你还缺少你的第一个input一个type属性。

查看文档:http://docs.jquery.com/Plugins/Validation