Как получить окончательный выбор даты из элемента ввода типа даты?

Когда вы создаете элемент ввода с типом даты, современные браузеры предоставляют средство выбора даты. Я заметил, что Firefox, а также другие браузеры запускают событие «изменения» при каждом изменении даты, поэтому, когда вы просматриваете месяцы или годы, событие «изменения» запускается, даже если вы не закончили выбор дата, которую вы хотите. Есть ли способ узнать, когда меню закрыто и выбор «окончательный»? В качестве типов событий есть только «ввод» и «изменение». Я надеялся, что будет «закрытое» мероприятие или что-то подобное.

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

Итак, есть ли способ узнать, когда он закрылся, и пользователь сделал свой «окончательный» выбор, и они не просто листают календарь?

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

HynekS 27.11.2018 21:49

Какие еще браузеры? Этого не происходит в Chrome или Edge из моих тестов. Поведение в Firefox связано с тем, что когда вы перемещаетесь по селекторам месяца / года, он фактически изменяет значение поля ввода. В Chrome он не меняет входное значение, пока вы не нажмете дату (день), а в Edge он точно так же не меняет входное значение, пока вы не нажмете кнопку «принять».

Herohtar 27.11.2018 22:07

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

Herohtar 27.11.2018 22:14

@Herohtar Спасибо за ваш вклад. Пожалуйста, добавьте ответ, что это невозможно, и если никто другой не сможет доказать вам обратное, я приму ваш ответ. В настоящее время я использую кнопку, чтобы подтвердить, что они готовы, но я надеялся, что смогу этого избежать, а также не импортировать настраиваемую библиотеку выбора даты только для этого.

ADJenks 27.11.2018 23:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В настоящее время нет способа узнать, открыт ли календарь или закрыт, а также нет какого-либо события, которое срабатывает при его закрытии.

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

Если вы хотите единообразного взаимодействия с пользователем, лучшим вариантом будет использование настраиваемого средства выбора даты, поскольку внешний вид и поведение календаря в разных браузерах различаются.

Другие вопросы по теме