nazar-pc / PickMeUp

Really simple, powerful, customizable and lightweight standalone datepicker
BSD Zero Clause License
616 stars 191 forks source link

onchange and show popup #77

Closed faiwer closed 8 years ago

faiwer commented 9 years ago

When calendar showing self popup, it change date to default (new Date). But that not "bubling" to change-callback, because inside used pickmeup('set_date', date).

Когда календарь показывает свой popup, он, при отсутствии значения, устанавливает новое (неплохо бы опцию добавить, чтобы он умел так не делать). Устанавливает новое он, используя pickmeup('set_date', date). Оный метод почему-то не вызывает change-callback. Что приводит к тому, что значение то установлено в <input/>, но оно не всплыло. Если используется knockoutjs или что-то в таком же духе, это приводит к тому, что в модели значения нет, а пользователь его видит.

change-callback вызывается только в update_date (options.change.apply(this, prepared_date);). Я так и не понял баг ли это или фича. Временно проблему решил так: ..., change: $el.change.bind($el), before_show: $el.change.bind($el), .... Спасает то, что before_show вызывается рядом же.

Или я что-то недопонял? :)

faiwer commented 9 years ago

Почитал тут issues, понял что если установить в default_date false, то авто-значение не устанавливается. До этого пробовал null и оно помирало :) В остальном вопрос открытый.

nazar-pc commented 9 years ago

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

faiwer commented 9 years ago

Вот https://jsfiddle.net/gphnwbtv/ Как увидеть баг. Изначально input пуст. При клике по нему появится popup и default-ое значение. Раз появилось default значение, то должен быть вызван change. Он не вызывается. При blur-е (к примеру ткнуть просто в левую область, чтобы календарь исчез), тоже change не вызывается. А вызовется он только если выбрать дату мышью в календаре.

Ну а раз change при открытии календаря не вызывается, но по факту дата меняется, то мы и получаем рассинхронизацию модели и того, что пользователь видит на экране.

nazar-pc commented 9 years ago

Согласен, буду благодарен за PR.

nazar-pc commented 8 years ago

Should be fixed in 1a90a25