2010-04-29 4 views
67

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

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

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

бы идея. Искал через документы без везения.

ответ

121

Этот метод, кажется, что вы хотите:

$('#email-field-only').valid(); 
+0

спасибо! Я не знал ... – brainondev

+4

Примечание: имя элемента формы также работает с этой функцией, то есть '$ ('input [name = email-field-only]'). Valid();' также работает – Raptor

+1

в чем проблема ? когда я использую этот метод, мои проверки приостанавливаются – nakajuice

5

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

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

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

- крест размещены с this similar question

14

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

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

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

+1

Это то, что сработало для меня, я также добавил '.valid() 'в конце, поэтому он искал меня' $ («# Form»).data ('validator'). element ('input [name = __ Suburb]'). valid(); 'Я считаю, что если вы не выбрали его по идентификатору, это может потребоваться. –

+0

Я не думаю, что '.valid()' принадлежит в конце выражения. Функция '.element()' возвращает логический результат ([docs] (https://jqueryvalidation.org/Validator.element/) | [src] (https://github.com/jquery-validation/jquery-validation /blob/1.16.0/dist/jquery.validate.js#L503)). Когда я пытаюсь вызвать .valid(), я получаю сообщение об ошибке: * «Uncaught TypeError:' $ (...). Data (...). Element (...). Valid' не является функцией "* – KyleMit

+0

Вы прикрепляли валидатор к форме? прошло несколько лет с тех пор, как я использовал проверку JQuery ... Так что API для этого может измениться. В то время мне приходилось работать через внутренние органы, чтобы найти выше. Он не был опубликован в документации, поэтому структура, возможно, изменилась с тех пор, как я в последний раз смотрел. – Tracker1

7
$("#FormId").validate().element('#FieldId'); 
+1

Я предпочитаю этот метод, это приятный 1 лайнер. Отлично работает. – Andy

+1

Это идеальный ответ без ошибок с действительным типом возврата –

9

Использование Validator.element():

Validates a single element, returns true if it is valid, false otherwise.

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

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

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

Checks whether the selected form is valid or whether all selected elements are valid.

+0

Работает, спасибо. – Andy

3

Если вы хотите проверить отдельные поля формы, но не хотите для пользовательского интерфейса, чтобы срабатывать и отображать любые ошибки проверки, вы можете рассмотреть возможность использования 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)*/ 
} 
+0

Я так долго искал этот ответ! Это был единственный способ, которым метка ошибки не отображалась! –

Смежные вопросы