Использование jQuery для обхода проблем tabindex


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

В настоящее время я разрабатываю на Mac / Firefox, и я знаю о системном параметре Mac по умолчанию, который устанавливает переключение вкладок только на входные элементы и списки. Тем не менее, я хочу переопределить эту и любые другие настройки, которые могут помешать этому на любом система / браузер.

Я использую jQuery, чтобы попытаться обойти это. Вот мой код на данный момент:
$(":input").keypress(function(e){
    if (e.which == 0)
    {
        tindex = parseInt($(this).attr("tabindex")) + 1;
        $(":input[tabindex='" + tindex + "']").focus();
    }
});
Однако это работает не так, как я хочу. Когда параметр Mac по умолчанию включен, это фактически пропускает tabindex и пропускает нетекстовые / textarea элементы в целом. Например, если я нахожусь на input[tabindex=2] и нажимаю клавишу "Tab", я отправляюсь на input[tabindex=4]. Если я нахожусь на input[tabindex=2] и между input[tabindex=2] и input[tabindex=4] есть поле select, Меня отправляют в input[tabindex=5].

Я хочу input[tabindex=2] отправить меня в input[tabindex=3], select[tabindex=3], input[type=radio][tabindex=3], и т.д.; в основном все, что имеет tabindex из 3.

Дайте мне знать о любых идеях, чтобы обойти эту проблему. Также, Пожалуйста, скажите мне, если вы знаете что-нибудь еще на любых других системах / браузерах, что я должен смотреть.
1 3

1 ответ:

Добавьте e.preventDefault(); в обработчик событий нажатия клавиши. Это остановит браузер от выполнения действия по умолчанию для этого события. Это также остановит браузер от перехода по ссылке, если он помещен в обработчик кликов.

Смотритедокументацию .