Closed promo360 closed 6 years ago
Пример: https://jsfiddle.net/7hr6n23h/1/
На 114 строке в JS вызываю метод установки периода: setDate('month');
Он устанавливается в pickmeup через:
pickmeup('.jsPickmeupInit').set_date(date);
на 109 строке,
но не срабатывает inputEl.addEventListener('pickmeup-change', function(e) {
на 21 строке,
поэтому в кнопке остается надпись "Выбрать период", хотя должно быть "21 апр - 22 мая 2018".
Понял зачем нужна эта проверка, чтобы событие change не срабатывало каждый раз при фокусировке на инпуте. Нужно что-то другое придумать..
Сделал вот такой костыль https://jsfiddle.net/7hr6n23h/3/
Добавил функцию (почти копия той, что используется в pickmeup.js)
function dom_dispatch_event(element, detail) {
var e = document.createEvent('Event');
e.detail = detail;
e.initEvent('pickmeup-change', false, true);
return element.dispatchEvent(e);
}
И вызываю эту функцию сразу после set_date, получается так:
pickmeup('.jsPickmeupInit').set_date(date);
dom_dispatch_event($('.jsPickmeupInit')[0], {
date: date,
formatted_date: []
});
Если есть решение лучше - буду благодарен.
Если вы ловите pickmeup-change
, то у вас есть функция обработчик этого события. Вынесите её отдельно и дайте имя. После этого вызывайте не dom_dispatch_event
, а эту новую функцию напрямую. Это и проще и чище в плане кода.
Спасибо, хорошая идея.
Пока закрываю issue, но не стесняйтесь комментировать дальше если необходимо. Для новых вопросов/багов создавайте новые issue.
Привет! Спасибо за данный модуль, лучший из datepicker'ов.
Столкнулся с ситуацией, когда нужно, чтобы при set_date срабатывало событие pickmeup-change, либо нужен доп. метод, чтобы принудительно вызывать это событие.
На данный момент все сработает хорошо, если убрать эту проверку: https://github.com/nazar-pc/PickMeUp/blob/7c82388c8eadc0c6660037f67b794a09f50a1b13/js/pickmeup.js#L1160
Зачем вообще она нужна?