jquery ui datepicker onselect inst target - PullRequest
0 голосов
/ 26 мая 2010

Итак, у меня есть, на мой взгляд, довольно простой вопрос, но я не могу понять, насколько я понимаю. Как вы ссылаетесь на выбранный элемент даты (DOM) после нажатия. Я пробовал это:

$("#eventCalendar").datepicker({
 onSelect: function(dateText,inst){  
  var activeDateObj = $("#eventCalendar").find('.ui-state-active');  
 } 
});

Это возвращает объект, но я думаю, что он ссылается на ранее выбранный элемент; так как в классе еще не был применен новый элемент. Я действительно удивлен, что объект inst не содержит какой-либо ссылки на элемент clicked. Я заставил этот метод работать, обернув быстрый тайм-аут вокруг объявления переменной, но это довольно грязно, и я хочу знать, есть ли лучший способ. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 января 2015

Решение

//...
onSelect: function(date, inst) {
    setTimeout(function() {
        console.log($('a.ui-state-active')); // clicked day's DOM-Element
    }, 0);
}

setTimeout-Wrapper поставит вещи в очередь после обновления календаря.

1 голос
/ 26 мая 2010

В ответ на комментарии к ОП.

Из того, что я могу сказать, календарь, кажется, перезагружает таблицу, содержащую дни месяца, каждый раз, когда выбирается день, он делает это и при смене месяца.

Если вы используете .live('click',function(){...}), это позволит вам присоединить вашу функцию.

Для селектора может подойти что-то подобное

 //attached to an input, not displayed inline.
$('#ui-datepicker-div .ui-datepicker table.ui-datepicker-calendar td[class!=ui-state-disabled]')

Теперь вам просто нужно выяснить, какая дата была выбрана.

...