С помощью плагина jQuery Validation от bassistance как я могу проверять форму программно, не вызывая сообщений об ошибках? - PullRequest
0 голосов
/ 19 мая 2011

Вопрос немного сложен. Позвольте мне поставить этот вопрос перед конечной целью.

Цель
Я хотел бы запустить некоторый код, который проверит правильность формы с помощью плагина validate, но не вызовет сообщения об ошибках. Я хотел бы, чтобы действие Отправить форму следовало тем же правилам, но затем выдавало ошибки.

Обычно я хочу отключить кнопку «Отправить», пока форма не станет полностью действительной. Поэтому при каждом изменении поля мне нужно проверять, чтобы все правила были выполнены. Этот процесс вызывает ошибки, которые будут показаны. Это (в моем случае) проблематично.

Вопрос
Кто-нибудь знает способ проверить правильность формы с помощью плагина Validation, чтобы просто возвращать логическое значение true или false, не вызывая сообщений об ошибках каждый раз, когда что-либо в форме изменяется?

Что я пробовал
Я пытался использовать метод success, однако он работает только после отправки формы и влияет только на измененное поле, а не на форму в целом.

Я также пытался использовать $('#start_date').valid(), однако, как я уже сказал выше, это приводит к появлению ошибок в форме.

Есть идеи?

Плагин (чтобы не было путаницы): Проверка Jassu от bassistance

Ответы [ 2 ]

3 голосов
/ 19 мая 2011

Самый быстрый способ, которым я мог бы придумать, - это использовать настраиваемую функцию размещения сообщений об ошибках проверки, которая ничего не делала, если вы пытались избежать появления ошибок.Так что-то вроде:

var hideerrors = false;
form.validate({ errorClass: "err",
            errorPlacement: function(error, element) {
                        if(hideerrors) return;
            error.appendTo(element.parent("div").next("div.errlabel"));
            }
        });

Затем, когда вы хотите проверить, вы можете просто установить hideerrors в true, вызвать validate, затем снова установить hideerrors в false.

1 голос
/ 20 мая 2011

Я нырнул в реальный исходный код плагина прошлой ночью и фактически нашел недокументированный метод, который делает именно то, что я хочу!

$('#formname').validate().checkForm() - Возвращает true или false в зависимости от того,Форма действительна, не вызывая сообщения об ошибках.

Я не знаю, почему этот метод не документирован, но это действительно так.

Моя реализация для отключения или включенияКнопка «Отправить» работает следующим образом:

$('#formname').bind('change keyup', function() {
        if($(this).validate().checkForm()) {
            $('#submitbutton').removeClass('button_disabled').attr('disabled', false);
        } else {
            $('#submitbutton').addClass('button_disabled').attr('disabled', true);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...