Я застреваю, пытаясь включить событие keydown в кнопку «Следующий месяц» в jQuery datepicker.jQuery Datepicker: выберите месяц с ключом закладки
Идея состоит в том, чтобы пользователи могли выбирать дату без использования мыши, только табуляции и клавиши ввода.
Я знаю, что есть карта keydown для datepicker (http://hanshillen.github.io/jqtest/#goto_datepicker), но я хочу что-то более легкое и интуитивно понятное. Кстати, на моем Mac нет «страницы вниз», которая зарезервирована для «следующего месяца»), поэтому я не могу перемещаться по датепике, используя эту настройку по умолчанию.
По умолчанию в таблицах «предыдущий месяц» и «следующий месяц» кнопки даже не попадают в фокус. Тем не менее, я могу решить это, добавив атрибут «tabindex» в соответствующий div. Но даже в фокусе кнопка не отвечает на клавишу Enter. Работает только щелчок.
Вот HTML этой части DatePicker:
<a class="ui-datepicker-next ui-corner-all ui-state-hover
ui-datepicker-next-hover ui-state-active" data-handler="next"
data-event="click" title="Next" tabindex="1"><span class="ui-icon
ui-icon-circle-triangle-e">Next</span></a>
(я добавил классы "ui-state-hover ui-datepicker-next-hover ui-state-active"
с помощью моего яваскрипта функции).
Что дальше? Это вопрос изменения data-event="click"
на что-то еще? Я попытался это сделать, а также найти соответствующие функции или обработчики в файлах jquery.js и jquery-ui.js, но не удалось. Я действительно плохо знаю передовые javascript и jQuery UI, так как должно быть какое-то простое решение этой проблемы.
Цените любую помощь, спасибо.
P.S. Здесь, в StackOverflow, я читал много обсуждений, но только этот: Focus on jQuery UI Calender accessibility with TAB key, похоже, касается проблемы доступности/табуляции датпикера, и до сих пор ничего не говорится о выборе месяцев.
Спасибо! Хорошая точка зрения! Я решил проблему, когда кнопки next/prev month не получают фокуса, добавив к ним атрибут 'tabindex':' $ (".ii-datepicker-next"). Attr ("tabindex", "2"); , Что касается потери атрибутов (и, казалось бы, обработчиков событий), я написал пользовательскую функцию с рекурсивным вызовом, потому что я не мог понять, как использовать JQuery DP API для этой цели. Теперь я попытался адаптировать ваше решение (отлично!), И он частично работает. Тем не менее, не могу понять, зачем нужно «устанавливать тайм-аут»? Почему в противном случае функция внутри 'onChangeMonthYear()' не вызывается вообще? –
SetTimeout - это проблема с тем, что при запуске события onChangeMonthYear новая таблица календаря еще не создана. –
, пожалуйста, примите мой ответ, если он работает для вас –