Плагин jQuery Validate - триггерная проверка одного поля

У меня есть форма, которую можно предварительно заполнить через facebook connect. После подключения пользователя его имя и адрес электронной почты заполняются автоматически. Проблема в том, что при этом не запускается удаленная проверка, чтобы проверить, существует ли уже адрес электронной почты.

Есть ли способ вызвать проверку только для этого поля? Что-то вроде:

$('#email-field-only').validate()

была бы идея. Искал документы безуспешно.


person ryan    schedule 29.04.2010    source источник


Ответы (7)


Кажется, этот метод делает то, что вы хотите:

$('#email-field-only').valid();
person Gregoire    schedule 03.03.2011
comment
Примечание: имя элемента формы также работает с этой функцией, т.е. $('input[name=email-field-only]').valid(); также работает - person Raptor; 22.11.2012
comment
в чем проблема? когда я использую этот метод, моя проверка прерывается - person nakajuice; 03.07.2013
comment
Это решение проверяет всю форму, показывая сообщения об ошибках для всех полей. - person Pablo; 21.04.2015
comment
@haemhweg, может быть, вы не вызывали метод .validate () перед попыткой использования .valid ()? Документы: jqueryvalidation.org/valid - person userfuser; 10.10.2016
comment
Это работает, но у меня проблема с проверкой дважды ... это дает мне ошибку JS: TypeError: validator is undefined .. Для репликации сделайте следующее: 1) не пройдите проверку; 2) введите правильное значение в поле; 3) повторно проверить - person phoenix; 28.11.2016
comment
API изменился, используйте ответ, предоставленный Полом - person Anima-t3d; 05.10.2017

Используйте Validator.element():

Проверяет один элемент, возвращает true, если он действителен, и false в противном случае.

Вот пример, показанный в API:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid() проверяет всю форму, как указывали другие. API говорит:

Проверяет, действительна ли выбранная форма или все выбранные элементы действительны.

person Paul    schedule 21.08.2015

По какой-то причине некоторые другие методы не работают до тех пор, пока поле не будет сфокусировано / размыто / не изменено, или пока не будет предпринята попытка отправки ... это работает для меня.

$("#formid").data('validator').element('#element').valid();

Пришлось покопаться в скрипте jquery.validate, чтобы найти его ...

person Tracker1    schedule 07.08.2012
comment
Это то, что у меня сработало, я также добавил .valid() в конце, чтобы он искал меня $("#Form").data('validator').element('input[name=__Suburb]').valid();. Я считаю, что если вы не выберете его по идентификатору, это может потребоваться. - person Mihai P.; 15.01.2015
comment
Я не думаю, что .valid() стоит в конце выражения. Функция .element() возвращает логический результат (docs | src). Когда я пытаюсь вызвать .valid (), я получаю сообщение об ошибке: Uncaught TypeError: $(...).data(...).element(...).valid не является функцией - person KyleMit; 19.04.2017
comment
Вы прикрепили валидатор к форме? Прошло несколько лет с тех пор, как я использовал проверку JQuery ... Так что API для этого, возможно, изменился. В то время мне пришлось проработать внутреннее устройство, чтобы найти вышеупомянутое. Он не был опубликован в документации, поэтому структура вполне могла измениться с тех пор, как я смотрел последний раз. - person Tracker1; 21.04.2017

Если вы хотите проверить отдельное поле формы, но не хотите, чтобы пользовательский интерфейс запускался и отображал какие-либо ошибки проверки, вы можете рассмотреть возможность использования метода Validator.check (), который возвращается, если данное поле проходит проверку или нет.

Вот пример

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}
person Dmitry Komin    schedule 08.02.2017

Когда вы настраиваете валидацию, вы должны сохранить объект валидатора. вы можете использовать это для проверки отдельных полей.

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

- перекрестная публикация с этот похожий вопрос

person ShaneBlake    schedule 05.05.2011

в случае, если вы хотите выполнить проверку "некоторых элементов" (не всех элементов) в вашей форме. Вы можете использовать этот метод:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

Надеюсь, это поможет всем :)

ИЗМЕНЕНО

person Peps    schedule 27.03.2020

person    schedule
comment
Я предпочитаю этот метод, это хороший 1 лайнер. Отлично работает, спасибо. - person Andy; 01.04.2016
comment
Это идеальный ответ без ошибок с допустимым типом возврата. - person Kaushik Thanki; 04.11.2016