JQuery UI DatePicker предыдущий / следующий сломан - PullRequest
2 голосов
/ 01 апреля 2010

Хорошо, я использую средство выбора даты в jQuery UI как замену ужасного средства выбора даты AjaxToolkit, но я столкнулся с проблемой.

По какой-то причине кнопки выбора даты / выбора больше не показывают правильное поведение и вместо этого перемещаются с этого месяца (выбранный по умолчанию) на декабрь 1899 года для предыдущего и январь 1900 года для следующего.

Кто-нибудь может подсказать, почему это происходит?

Код привязки следующий:

$('.jQueryCalendarComponent').live('click', function() {
    $(this).removeClass('hasDatepicker').datepicker({
    showOn: 'both',
    showAnim: '',
    dateFormat: 'dd/mm/yy',
    buttonImage: 'images/calendar.gif',
    buttonImageOnly: true
    }).focus();
 }).datepicker({
    showOn: 'both',
    showAnim: '',
    dateFormat: 'dd/mm/yy',
    "buttonImage: 'images/calendar.gif',
    buttonImageOnly: true
 });

Live ('click') используется аналогично тому, как live будет использоваться для прикрепления события, а .jQueryCalendarComponent является текстовым полем.

Ответы [ 3 ]

0 голосов
/ 01 апреля 2010

Предыдущий виджет действует и переопределяется, это может привести к забавным вещам ... попробуйте вместо этого:

$(this).datepicker('destroy').datepicker({
showOn: 'both',
showAnim: '',
dateFormat: 'dd/mm/yy',
buttonImage: 'images/calendar.gif',
buttonImageOnly: true
}).focus();

Это уничтожает предыдущий виджет и воссоздает на основе текущих данных, removeClass() не очищает все, что связано со средством выбора даты, только один атрибут, который он применяет ... это полностью очистит виджет.

0 голосов
/ 02 сентября 2011

Эта проблема также возникает, если вы загружаете ввод DatePicker в диалоге пользовательского интерфейса jQuery. Если вход с включенным указателем даты является первым в диалоговом окне, автоматическая настройка фокуса в пользовательском интерфейсе приведет к тому, что ввод будет отображаться в готовом документе, переопределяя параметр showOn. Похоже, это происходит до того, как средство выбора даты полностью готово, и, следовательно, эта проблема может возникнуть.

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

0 голосов
/ 01 апреля 2010

Вам не нужно использовать live для вашего указателя даты. Вызов datapicker в текстовое поле установит события для вас. Каждый раз, когда вы нажимаете на текстовое поле, вы складываете в него указатели даты. Это может объяснить странную функциональность. Попробуйте что-то вроде:

$('.jQueryCalendarComponent').datepicker({
    showOn: 'both',
    showAnim: '',
    dateFormat: 'dd/mm/yy',
    buttonImage: 'images/calendar.gif',
    buttonImageOnly: true
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...