Использование 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 и вообще пропускает элементы, не являющиеся текстовыми / текстовыми. Например, если я нахожусь на 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.

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


person Josh Leitzel    schedule 18.07.2009    source источник


Ответы (1)


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

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

person sixthgear    schedule 18.07.2009