У меня есть идея, что это может быть глупо, но я застрял на нем часами.Проверка 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, потому что я не мог заставить работу работать больше, чем в первый раз (это означает, что она не будет отвергать последовательность обманов без обновления страницы), и это было предложено в качестве обходного пути. Когда я комментирую добавленный метод, он позволяет мне отправить форму, но, конечно, не проверяет наличие обмана.
В любом случае, любые идеи были бы высоко оценены.
Джон