2012-10-26 85 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