我目前使用jQuery validate插件來驗證我的網站中使用的表單。但是,有多種形式的可能性,我使用的是一種適用於所有驗證腳本的應用程序,它應該針對具有特定類的div中的所有表單。無論表單是否存在,jQuery Validate函數都會觸發
目前我的驗證如下:
$(document).ready(function(){
jQuery.validator.addClassRules({
isemail: {
required: true,
email: true
}
});
jQuery.validator.addMethod("ContainsAtLeastOneDigit", function (value) { return /[a-z].*[0-9]|[0-9].*[a-z]/i.test(value); }, 'Your password must contain at least 1 number');
$(".icams_inserted form").validate({
errorClass : "invalid",
validClass : "valid",
showErrors: function(errorMap, errorList) {
var err = this.numberOfInvalids();
if (err > 1) {
var word = "errors";
var field = "fields";
$("#error_message").html("The form contains " + this.numberOfInvalids() +" "+ word + ". Please correct the highlighted " + field + " below."); this.defaultShowErrors();
}else{
var word = "error";
var field ="field";
if (err < 1) {
$("#error_message").html("");
this.defaultShowErrors();
}else{
$("#error_message").html("The form contains " + this.numberOfInvalids() +" "+ word + ". Please correct the highlighted " + field + " below."); this.defaultShowErrors();
}
}
},
submitHandler: function(form){
/*For the registration form, move the email address the user has entered into the hidden email field*/
if (form.hasClass('prefs')) {
var mail = $('#p_username').val();
$('input[type="hidden"][name="p_email_address"]').val(mail);
}
form.submit();
},
rules : {
p_password:{
minlength: 8,
ContainsAtLeastOneDigit: true
},
p_password_conf:{
equalTo: p_password,
minlength: 8,
ContainsAtLeastOneDigit: true
}
},
messages:{
p_password_conf:{
equalTo: 'The passwords entered do not match'
}
}
});
})
但是,由於某種原因,驗證似乎踢的每一頁上,即使是沒有任何形式的網頁。這然後在Firebug中產生以下錯誤:
ReferenceError: p_password is not defined
equalTo: p_password,
有誰知道這是爲什麼?我的理解是,插件只應該觸發它在這種情況下的目標元素,其形式包含在具有.icams_inserted類的元素中,但似乎並非如此。這也是我的理解,只有在找到有關元素的情況下才能進行驗證。在這種情況下,頁面上沒有名稱爲p_password的元素,因此驗證腳本不應觸發。我真的不知道爲什麼這樣做。
我甚至嘗試過使用不存在於我的整個站點中的虛擬類,它似乎仍然認爲無論是驗證都會觸發。任何幫助將不勝感激。
請顯示演示您的問題的相關HTML標記。 – Sparky