Плагин JQuery Date Input
1807 сообщений
#14 лет назад
Народ, помогите, я в замыкании. Где-то жутко туплю, но не могу понять где.ссылка
Справа от селекта "все месяцы" иконка календаря. По нажатию на нее выпадает календарик. И все вроди хорошо, но при попытке переключить месяц или год стрелочками "туда-сюда" календарь пропадает. Сам факт переключения происходит, что видно, если еще раз ткнуть на иконку, но вот пропадать-то он не должен. Вот оригинал:
ссылка
Консоль файрбага по клику выдает ошибку, но это ошибка другого плана, в скрипте cusel, там какая-то мелкая помарка, на работу календаря не влияет, проверял, удаляв скрипт cusel-а.
У кого есть идеи?
5330 сообщений
1807 сообщений
#14 лет назад
Цитата ("nehovaysyatopol"):Консоль файрбага по клику выдает ошибку, но это ошибка другого плана, в скрипте cusel, там какая-то мелкая помарка, на работу календаря не влияет, проверял, удаляв скрипт cusel-а.
ArtPro, как насчет читать внимательнее?

UPD. Пофиксил этот баг со скриптом CUSEL. Календарь все равно пропадает.
87 сообщений
#14 лет назад
Сейчас событие click, произошедшее на каком либо из элементов в контейнере .date_selector всплывает за его пределы и доходит аж до body. А плагин то скорее всего постороен так, что при клике по body скрывает окно выбора даты. Из за чего это произошло, не совсем понятно. Можешь попробовать отключить вообще все скрипты кроме необходимых для запуска плагина и посмотреть, что получится. А можешь просто повесить на событие click для контейнера .date_selector функцию, останавливающую дальнейшее всплытие события.
upd.
$('.date_selector'

e.stopImmediatePropagation();
});
Этот кусок кода фиксит проблему.
1807 сообщений
#14 лет назад
Цитата ("segoddnja"):Можешь попробовать отключить вообще все скрипты кроме необходимых для запуска плагина и посмотреть, что получится.
Пробовал, ничо не менялось...
Методом тыка нашел, что ошибка вот тут. Срабатывает это условие, и включается функция hide(). Строка 168.
hideIfClickOutside: function(event) {
if (event.target != this.input && !this.insideSelector(event)) {
this.hide();
};
},
1807 сообщений
#14 лет назад
О, щас попробую!UPD. Ура, работает! Спасибо.
Правда все равно хочу разобраться, почему пропадает, ведь это все-таки "костыль", а не решение болезни...

И опять же, почему на демке работает без костылей?
87 сообщений
#14 лет назад
Хитро как то сделано. По моему эффективнее просто не давать событиям внутри контейнера выходить за его границы.
87 сообщений
#14 лет назад
Если интересно правильное решение болезни, попробуй у дива в твоей верстке с классом date_sector поменять имя класса на какое то другое. Дело в том, что плагин тоже создает элемент с таким же классом, из за этого видать и происходит сбой в функции insideSelector, которая определяет попадание клика в элемент, показывающий/скрывающий окно ввода даты.
1807 сообщений
#14 лет назад
Дык это он и содает, в моей верстке нету такого блока, просто инпут, а к нему уже привязывается все.