背景: 我有一个文本。我在用户输入时捕获Tab键事件,并且插入Tab字符(\ t)并阻止浏览器关注下一个输入。 在Mac和PC上,这在所有浏览器上都没有问题。IOS蓝牙键盘 - 输入 - 选项卡事件
问题: 当使用连接到iPad的蓝牙键盘时,这不起作用。文档注册了tab键事件,但只要我专注于textarea,所有tab键事件都会被忽略并不会发送到浏览器。我也用文本输入进行了测试,并看到相同的结果。
实施例:https://plnkr.co/edit/NQvxijj3ISZ0B48fSHvi?p=preview
简单听者:
$(function(){
$("body").bind("keydown",function(e){
$("#bodyLog").append($("<div/>").html(e.keyCode));
return e.preventDefault();
});
});
当你有选择的体(不是TEXTAREA),tab键事件登记和数字9次出现。任何其他关键事件也会出现。
当你有选择的文本区域,所有的keydown事件被登记在身体监听器和监听textarea的......除了tab键两者。
如果任何人有一个解决方案,我将永远感激。
编辑 我已经观看了5位,然后转换,为制表符“固定”的问题。
我研究这个,只能推测,当集中在输入/文本域iOS不希望释放TAB键的控制。我曾尝试访问Google文档等网站,看看它们是否已经绕过它,但它们强制您下载该应用程序,而不是允许您在iOS上的Safari内编辑文件。我猜这是因为iOS想要完全控制Tab键。我在iOS上尝试过Chrome,但功能相同,所以我会说这不是Safari问题,而是iOS问题。
一个可能的但未经测试的解决方法是将整个<div>
编码为textarea,然后用div替换textarea。由于tab键适用于所有其他元素,因此它在理论上应该可行,但它需要相当多的Javascript和CSS才能使元素像另一个元素一样工作。
EDIT 2
我已经发现,使用选项+ Tab键可以让Tab键在文字区域被捕获。我不觉得这是令人满意的。当我在普通键盘上输入段落时,我不键入Option + Tab,我只是键入Tab。据我所知,无法在textarea中单独捕获Tab键。
按下iOS键盘上的OPT +选项卡是否与非仪器键盘上的选项卡执行相同的操作? –
您是否尝试过使用http://dmauro.github.io/Keypress/? –
这太奇怪了。你认为这与iOS Safari的怪异有关吗? https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html –