Плагин проверки JQuery: valid () возвращает false для необязательных полей - PullRequest
2 голосов
/ 26 июня 2010

Функция valid () заявляет: «Проверяет, является ли выбранная форма действительной или все ли выбранные элементы действительны».

Что, по-видимому, подразумевает, что мы можем проверить группу элементов управления с помощью селекторапроверяете элементы управления в форме asp.net) например

$('div[id$=pnlBillingInfo] .Field input').valid()

Это работает, если все поля обязательны для заполнения.Однако, если одно поле не требует проверки (required = false), тогда valid () возвращает false, если это поле оставлено пустым.

Такое поведение кажется неправильным - мы что-то упустили?Мы должны иметь возможность оставить эти необязательные поля пустыми и при этом группа элементов управления подтвердит правильность.

Если мы попытаемся проверить это необязательное поле - результат будет неопределенным, например

$("#aspnetForm").validate().element('input[id$=txtBillingAddress2]')

jQuery 1.4.2

Проверка плагина jQuery 1.7 (последняя версия)

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Спасибо!

Ответы [ 2 ]

1 голос
/ 02 октября 2013

В библиотеке есть ошибка, когда методы правила проверяют наличие необязательных полей с помощью this.optional (element). Когда поле пустое, this.optional возвращает «несоответствие зависимостей», а метод проверки возвращает «неопределенное», помечая поле как недействительное.

Полное объяснение здесь:

https://github.com/jzaefferer/jquery-validation/issues/481

1 голос
/ 29 сентября 2011

Я считаю полезным фактически отделить правила проверки формы от события проверки (т. Е. Момента отправки формы).

Вам необходимо установить правила для формы - либо в JS, либо в HTML с помощью классов для каждого ввода / выбора / и т. Д.

Я предпочитаю делать это через JS, потому что он поддерживает DOM в чистоте; Кроме того, я обычно помещаю правила формы вне функции $ (document) .ready ():

$('#form').validate({
    rules: {
        [...]
    },
    messages: {
        [...]
    }
});

Это на самом деле ничего не делает. Это просто устанавливает правила. Когда вам нужно действительно проверить форму, вы можете проверить эти правила, запустив событие .valid():

$(document).ready(function(){
    $('#form').submit(function(){

            // Check validity
            if (!$(this).valid()) return false;

            // Form is valid, so submit it!
            [...]
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...