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


90

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

Чи є спосіб, яким я можу назвати перевірку лише в цьому полі? Щось на зразок:

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

було б ідеєю. Шукав документи без удачі.

Відповіді:


147

Здається, цей метод робить те, що ви хочете:

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

4
Примітка: назва елемента форми також працює з цією функцією, тобто $('input[name=email-field-only]').valid();також працює
Raptor

1
в чому проблема? коли я використовую цей метод, моя перевірка переривається
nakajuice

2
Це рішення перевіряє всю форму, показуючи повідомлення про помилки для всіх полів.
Пабло

@haemhweg, можливо, ти не викликав метод .validate (), перш ніж намагатися використовувати .valid () ? Документи: jqueryvalidation.org/valid
userfuser

1
API змінився, використовуйте відповідь, надану Павлом
Anima-t3d

24

Використання Validator.element():

Перевіряє один елемент, повертає true, якщо він дійсний, інакше false.

Ось приклад, показаний в API:

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

.valid()перевіряє всю форму, як зазначали інші. В API сказано:

Перевіряє, чи є вибрана форма дійсною чи всі вибрані елементи є дійсними.


20

З якоїсь причини деякі інші методи не працюють, доки поле не буде сфокусовано / розмито / змінено або не буде зроблена спроба подати ... це працює для мене.

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

Довелося копати скрипт jquery.validate, щоб знайти його ...


1
Це те, що мені вдалося , я також додав .valid()наприкінці, так що він шукав мене, $("#Form").data('validator').element('input[name=__Suburb]').valid();я вважаю, що якщо ви не виберете його за ідентифікатором, це може знадобитися.
Mihai P.

2
Я не думаю, що .valid()належать до кінця виразу. .element()Функція повертає логічний результат ( документи | Src ). Коли я намагаюся зателефонувати .valid (), я отримую повідомлення про помилку: "Uncaught TypeError: $(...).data(...).element(...).validis not a function"
KyleMit

Ви прикріпили валідатор до форми? минуло кілька років, як я використовую перевірку JQuery ... Тож API для цього, можливо, змінився. У той час мені довелося працювати через внутрішні органи, щоб знайти вищезазначене. Це не було опубліковано в документації, тому структура, можливо, змінилася з моменту останнього перегляду.
Tracker1,

16
$("#FormId").validate().element('#FieldId');

2
Я віддаю перевагу цьому методу, це хороший 1 лайнер. Чудово працює, дякую.
Енді

1
Це ідеальна відповідь без помилок з дійсним типом повернення
Kaushik Thanki

7

Під час налаштування валідації слід зберегти об’єкт валідатора. Ви можете використовувати це для перевірки окремих полів.

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

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

- хрест, розміщений із подібним запитанням


7

Якщо ви хочете перевірити окреме поле форми, але не хочете, щоб користувальницький інтерфейс спрацьовував і відображав помилки перевірки, ви можете використати метод 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

на випадок, якщо ви хочете зробити перевірку для "деяких елементів" (не всіх елементів) у вашій формі. Ви можете скористатися цим методом:

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

Сподіваюся, це допоможе всім :)

ВИДАЛЕНО


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.