#jquery #jquery-validate
#jquery #jquery-проверка
Вопрос:
То, что я делаю, действительно просто. Мне просто нужна базовая форма, но если она становится действительной даже после того, как она зависает там и действует так, как будто поле является действительным, даже если это не так.
Например, если я введу abc@abc.com для адреса электронной почты, и он проверяет, затем устанавливает его как действительный. Но если я вернусь и введу электронное письмо, которое существует и должно возвращать false (и возвращает false), статус не изменится. Это также относится к методу equalTo.
Это действительно расстраивает :/
Вот JS [сокращенные имена]:
$('#register').validate({
rules: {
scq: {
required: true
},
email: {
required: true,
remote: {
url: 'ajax.php',
type: 'post',
async: false,
data: {
type: 'email',
email: function() {
return $('#email').val()
}
}
}
},
email2: {
equalTo: '#email'
},
pass: {
required: true
},
pass2: {
equalTo: '#pass'
}
},
success: function(label) {
label.html('amp;nbsp;').addClass('success');
}
});
PHP для ajax.php:
if($row['id']) $success = true;
else $success = false;
echo json_encode($success);
Ответ №1:
…если я вернусь и введу электронное письмо, которое существует и должно возвращать false (и возвращает false), статус не изменится.
Это потому, что вы вручную добавляете класс, вызываемый .success
внутри success:
обработчика. Проблема в том, что ничто не удаляет этот класс, если или когда проверка впоследствии завершится неудачей.
Вы могли бы просто позволить плагину автоматически применять / удалять соответствующий класс для достижения успеха. (Он уже делает это для класса ошибок.) Добавьте validClass:
обработчик…
$('#register').validate({
validClass: 'success',
rules: { // etc. etc.
А затем удалить .addClass('success')
из вашего success:
обработчика.
Я не совсем уверен, куда $success
вписывается ваша переменная или является ли это частью проблемы.
Однако, чтобы просто проверить, прошла ли проверка или не удалась, вы просто проверяете, является ли .valid()
это true или false …
if ($('#register').valid() == true) { alert('passed validation'); };
if ($('#register').valid() == false) { alert('failed validation'); };
Я надеюсь, что это поможет.
Комментарии:
1. Это сработало, и я действительно понял это до того, как увидел ваш комментарий. Увеличьте это, чтобы люди могли увидеть это в будущем!