Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OSX上切换HTML表单,有没有办法强制它在所有表单元素上停止?_Html_Macos - Fatal编程技术网

在OSX上切换HTML表单,有没有办法强制它在所有表单元素上停止?

在OSX上切换HTML表单,有没有办法强制它在所有表单元素上停止?,html,macos,Html,Macos,这里的第一个问题,要温柔。:) 在OSX中,通过一个HTML表单,你会发现它只在文本框和列表中停止。我需要它停止所有表单输入(不是严格意义上的inputs,所有收集数据的表单元素) 据我所知,这只能在系统首选项中的键盘快捷键下配置,但显然我们无法控制它 有人有什么想法吗?我不想在jQuery中编写一些东西来解决一些看起来很琐碎的问题 谢谢 来自: 愚蠢的OSX设置: 您必须在系统首选项中更改此项,否则无法更改(据我所知) 您可以尝试为任何具有焦点的输入编写jQuery触发器,查看是否按下了“

这里的第一个问题,要温柔。:)

在OSX中,通过一个HTML表单,你会发现它只在文本框和列表中停止。我需要它停止所有表单输入(不是严格意义上的
input
s,所有收集数据的表单元素)

据我所知,这只能在系统首选项中的键盘快捷键下配置,但显然我们无法控制它

有人有什么想法吗?我不想在jQuery中编写一些东西来解决一些看起来很琐碎的问题

谢谢

来自:

愚蠢的OSX设置:

您必须在系统首选项中更改此项,否则无法更改(据我所知)

您可以尝试为任何具有焦点的输入编写jQuery触发器,查看是否按下了“Tab”键,如果是,则跳到下一个
tabindex
元素

来自:

愚蠢的OSX设置:

您必须在系统首选项中更改此项,否则无法更改(据我所知)


您可以尝试为任何具有焦点的输入编写jQuery触发器,查看是否按下了“Tab”键,如果是,则跳到下一个
tabindex
元素

我会做类似的事情来迫使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();
});

这有点骇人,但比告诉用户在系统Prefs中更改他们的Safari设置要好得多,哈哈。

我会做类似的事情来强制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();
});

这有点骇人,但比告诉用户在系统Prefs中更改他们的Safari设置要好得多,哈哈。

谢谢Josh,在我的问题中,我注意到这是一种已知的“本地”修复方法,但我正在寻找一种在我无法控制该设置时修复它的方法,例如,其他人访问该站点。@sean:您可以进行一些操作系统检测,并要求用户更改设置。您也可以(正如我提到的)在jQuery中写一些东西。谢谢Josh。看来我最终还是要在jQuery中编写脚本了……谢谢Josh,在我的问题中,我注意到这是一种“本地”修复它的已知方法,但我要寻找的是一种在我无法控制该设置时修复它的方法,例如,其他人访问该站点。@sean:您可以进行一些操作系统检测,并要求用户更改设置。您也可以(正如我提到的)在jQuery中写一些东西。谢谢Josh。看来我最终还是要在jQuery中编写脚本了。。。