Клавиша Tab всегда скрывает Datepicker (доступность)Jquery

Программирование на jquery
Ответить
Гость
 Клавиша Tab всегда скрывает Datepicker (доступность)

Сообщение Гость »

Код: Выделить всё


$('input[type="text"].hasDatepicker').keydown(function(event) {
var target = $(event.target);
if(event.keyCode == 9) {
if(!target.datepicker("widget").is(":visible")) {
target.datepicker("show");
} else {
target.datepicker("hide");
}
}
});
Меня попросили сделать средство выбора даты более доступным, то есть пользователь переходит к полю даты рождения с помощью клавиши табуляции, снова нажимает клавишу табуляции, средство выбора даты открывается, и он может перемещайтесь по средству выбора с помощью кнопок клавиатуры, они снова нажимают вкладку, и оно закрывает средство выбора, а фокус переключается на следующий элемент формы.
Приведенный выше код отображает средство выбора даты при нажатии на вкладку. ключ. Однако если вы дважды нажмете Tab, чтобы скрыть его из того же поля ввода текста с фокусом, target.datepicker("widget").is(":visible") все равно будет иметь значение false. На самом деле оно всегда имеет значение false. Если я проверю другое нажатие клавиши, скажем, клавишу «a» с кодом 65, она действительно скроет средство выбора даты при втором нажатии клавиши. Я попробовал event.preventDefault(), но это все равно не помогло.
Я хоть убей, не могу понять, почему это происходит и почему это происходит всегда скрывает средство выбора даты всякий раз, когда я нажимаю «tab» и до того, как активируется обработчик событий нажатия клавиши. Отладчик показывает, что он уже закрыт, когда он входит в обработчик нажатия клавиши, несмотря на то, что он был открыт, когда я нажал клавишу, и этого не происходит для большинства других клавиш. Итак, я предполагаю, что где-то выше по течению до вызова обработчика нажатия клавиш он скрывает средство выбора даты, но где?
Изменить:
Я нашел следующий фрагмент в jquery-ui- Файл 1.13.2.min.js:

Код: Выделить всё

    _doKeyDown: function(a) {
var b, c = d.datepicker._getInst(a.target);
b = !0;
var f = c.dpDiv.is(".ui-datepicker-rtl");
c._keyEvent = !0;
if (d.datepicker._datepickerShowing)
switch (a.keyCode) {
case 9:
d.datepicker._hideDatepicker();
b = !1;
break;
I set the breakpoint to the datepicker being hidden basically, and it is executing this code. It looks to be default datepicker functionality to hide the datepicker on tab keypress (keycode = 9). Any way to override this?


Источник: https://stackoverflow.com/questions/781 ... essibility
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»