Плагин проверки jQuery с datepicker - неверная дата вызывает всплывающее окно datepicker при отправке - PullRequest
0 голосов
/ 19 января 2012

У меня есть простая форма MVC3, в которой включено поле даты и проверка на стороне клиента (jquery.validate / jquery.validate.unobtrusive). Я добавил код, чтобы прикрепить средство выбора даты (jQuery UI) к полю даты согласно документации. Однако, если средство выбора даты является последним, что я нажимаю перед нажатием кнопки отправки, и поле даты недопустимо, оно автоматически отображает средство выбора даты для этого поля. Я не хочу этого Как я могу отключить?

Редактировать:

После просмотра кода подключаемого модуля проверки похоже, что он пытается вручную сфокусироваться на последнем активном элементе управления вводом с помощью функции focusInvalid (), приведенной ниже:

focusInvalid: function() {
    if( this.settings.focusInvalid ) {
        try {
            $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
            .filter(":visible")
            .focus()
            // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
            .trigger("focusin");
        } catch(e) {
            // ignore IE throwing errors when focusing hidden elements
        }
    }
},

Похоже, есть 2 варианта решения этой проблемы. Одним из них является установка параметра focusInvalid на самом валидаторе в значение false. Вместо этого я решил сделать обезьянку-патч для функции focusInvalid, поскольку она позволяет мне сосредоточиться на ПЕРВОМ недопустимом элементе в форме, а не на последнем активном элементе.

$('form').data('validator').focusInvalid = function () {
    $(this.currentForm).find('.input-validation-error').first().focus();
};

Мне было бы интересно услышать другие подходы к этой проблеме, однако.

1 Ответ

1 голос
/ 08 марта 2012

Если это допустимо в вашем случае, вы можете отобразить средство выбора даты только с помощью кнопки, используя следующие параметры средства выбора даты:

showOn: 'button', showButtonPanel: true, buttonImage: '<your image file>',
            buttonImageOnly: true,
            buttonText: 'Choose a Date',

Если вы сделаете это таким образом, средство выбора даты не будет автоматически отображаться в случае сбоя проверки при отправке формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...