Вкладка через HTML-форму в OS X, любой способ заставить ее остановиться на всех элементах формы? - PullRequest
1 голос
/ 29 июля 2010

Первый вопрос здесь, будьте нежнее. :)

В OS X, используя вкладку HTML-формы, вы обнаружите, что она останавливается только на текстовых полях и списках. Мне нужно, чтобы он остановился на всех входах формы (не строго input s, все элементы формы, которые собирают данные).

Насколько я знаю, это можно настроить только в Системных настройках в разделе "Сочетания клавиш", но, очевидно, мы не можем это контролировать ...

У кого-нибудь есть идеи? Я бы не хотел писать что-то в jQuery, чтобы решить что-то, что кажется таким тривиальным.

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 июля 2010

С мой предыдущий вопрос :

Глупые настройки OSX:

альтернативный текст http://img810.imageshack.us/img810/5355/screenshot20100701at107.png

Вы должныизмените это в Системных настройках, и нет никакого способа сделать это иначе (насколько мне известно).

То, что вы могли бы попробовать, - написать триггер jQuery для любого входа, который имеетсфокусируйтесь, посмотрите, была ли нажата клавиша «Tab», и если это так, перейдите к следующему элементу tabindex.

0 голосов
/ 02 февраля 2016

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

var Tab = {};
Tab.i = 1,
Tab.items = 0;

function fixTabulation () {
    /* This can be used to auto-assign tab-indexes, or
    #  commented out if it manual tab-indexes have
    #  already been assigned.
    */
    $('input, select, textarea').each(function(){
        $(this).attr('tabindex', Tab.i);
        Tab.i++;
        Tab.items++;
    });

    Tab.i = 0;

    /* We need to listen for any forward or backward Tab
    #  key event tell the page where to focus next.
    */
    $(document).on({
        'keydown' : function(e) {
            if (navigator.appVersion.match("Safari")) {
                if (e.keyCode == 9 && !e.shiftKey) { //Tab key pressed
                    e.preventDefault();
                    Tab.i != Tab.items ? Tab.i++ : Tab.i = 1;
                    $('input[tabindex="' + Tab.i + '"], select[tabindex="' + Tab.i + '"], textarea[tabindex="' + Tab.i + '"]').not('input[type="hidden"]').focus();
                }
                if (e.shiftKey && e.keyCode == 9) { //Tab key pressed
                    e.preventDefault();
                    Tab.i != 1 ? Tab.i-- : Tab.i = Tab.items;
                    $('input[tabindex="' + Tab.i + '"], select[tabindex="' + Tab.i + '"], textarea[tabindex="' + Tab.i + '"]').not('input[type="hidden"]').focus();
                }
            }
        }
    });

    /* We need to update Tab.i if someone clicks into
    #  a different part of the form.  This allows us
    #  to keep tabbing from the newly clicked input
    */
    $('input[tabindex], select[tabindex], textarea[tabindex]').not('input[type="hidden"]').focus(function(e) {
        Tab.i = $(this).attr('tabindex');
        console.log(Tab.i);
    });
}

$(document).ready(function() {
    fixTabulation();
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...