Когда вы создаете элемент ввода с типом даты, современные браузеры предоставляют средство выбора даты. Я заметил, что Firefox, а также другие браузеры запускают событие «изменения» при каждом изменении даты, поэтому, когда вы просматриваете месяцы или годы, событие «изменения» запускается, даже если вы не закончили выбор дата, которую вы хотите. Есть ли способ узнать, когда меню закрыто и выбор «окончательный»? В качестве типов событий есть только «ввод» и «изменение». Я надеялся, что будет «закрытое» мероприятие или что-то подобное.
Я попытался обойти это, слушая события размытия на элементе, но он не размывается, пока вы не щелкнете мышью, поэтому, когда вы нажимаете на свой окончательный выбор даты, и он исчезает сам по себе, он не размывается. Я этого ожидал, но надо было попробовать.
Итак, есть ли способ узнать, когда он закрылся, и пользователь сделал свой «окончательный» выбор, и они не просто листают календарь?
Какие еще браузеры? Этого не происходит в Chrome или Edge из моих тестов. Поведение в Firefox связано с тем, что когда вы перемещаетесь по селекторам месяца / года, он фактически изменяет значение поля ввода. В Chrome он не меняет входное значение, пока вы не нажмете дату (день), а в Edge он точно так же не меняет входное значение, пока вы не нажмете кнопку «принять».
В любом случае не думаю, что есть способ проверить, закрылся ли календарь. Вероятно, было бы лучше предоставить пользователю какой-то другой способ указать, что их выбор даты является «окончательным», вместо того, чтобы пытаться предпринять действия сразу после выбора даты.
@Herohtar Спасибо за ваш вклад. Пожалуйста, добавьте ответ, что это невозможно, и если никто другой не сможет доказать вам обратное, я приму ваш ответ. В настоящее время я использую кнопку, чтобы подтвердить, что они готовы, но я надеялся, что смогу этого избежать, а также не импортировать настраиваемую библиотеку выбора даты только для этого.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В настоящее время нет способа узнать, открыт ли календарь или закрыт, а также нет какого-либо события, которое срабатывает при его закрытии.
События change и input, похоже, запускаются при одних и тех же обстоятельствах - в частности, когда текст в поле ввода изменен. Это происходит, когда пользователь выбирает дату в календаре, но также и при вводе непосредственно в поле.
Если вы хотите единообразного взаимодействия с пользователем, лучшим вариантом будет использование настраиваемого средства выбора даты, поскольку внешний вид и поведение календаря в разных браузерах различаются.
Возможно, вы можете прослушать событие
changeи где-нибудь сохранить значение; то, что сохраняется, является «последним выбором», если оно не отменяется другим явным «представлением» ...