我有一個想法,這可能是愚蠢的,但我一直堅持了幾個小時。jQuery的驗證與addMethod失敗時,它不應該
我有一個簡單的表單,使用jQuery驗證使用ajax來確定電子郵件地址是否已經在數據庫中。很棒。當找到一個電子郵件地址時,它會報告重複,如果沒有,則爲無聲。
但是,當我輸入一個我知道是新的電子郵件,並填寫表格的其餘部分,然後按提交,它會阻止提交表單並將焦點設置在電子郵件字段。
這裏是jQuery的:
$(document).ready(function(){
var email;
var name;
var passwd;
var passwd_repeat;
//form validation rules
$("#regForm1").validate({
rules: {
name: {
required: true,
minlength: 3,
},
passwd: {
required: true,
minlength: 8,
},
passwd_repeat: {
required: true,
equalTo: passwd,
minlength: 8
}
},
messages:
{
name: "Please enter your name.",
passwd: "Please enter a password.",
passwd_repeat: "Passwords must match."
}
});
$.validator.addMethod("validateUserEmail", function(value, element) {
var inputElem = $('#regForm1 :input[name="email"]'),
data = { "email=" : inputElem.val() },
eReport = ''; //error report*/
var dataString = 'email='+ inputElem.val();
$.ajax({
type: "POST",
url: '/checkdups.php',
data: dataString,
success: function(html) {
if (html !== 'true') {
$('#email').after('<label class="error" for="email">error - '+inputElem.val()+' already in use. Please <a href="http://tester4.com/staff/auth/login">Log in</a> with '+inputElem.val()+'.</label>');
return false;
}
else {
return true;
}
},
error: function(xhr, textStatus, errorThrown)
{
alert('ajax loading error... ... '+url + query);
return false;
}
});
},
'');
$(':input[name="email"]').rules("add", { "validateUserEmail" : true});
});
我添加了addMethod而不是使用.remote的規則,因爲我無法讓事情比第一次更有效(意思是它不會拒絕一連串沒有頁面刷新的模糊),而且這個被認爲是一種解決方法。當我評論添加的方法時,它允許我提交表單,但當然不檢查欺騙。
無論如何,任何見解都將非常感謝。
約翰