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