Javascript – iPad的标签键检测与蓝牙键盘

我有一个文本字段,用户可以键入数据。 他们可以使用Tab键,然后字段被缩进。 这对一切除了与蓝牙键盘的IOS都很好。

如果我访问http://www.rapidtables.com/tools/notepad.htm ,我可以在我的桌面/笔记本电脑上标签。 但在我的iPad上…没有骰子。

如果我访问https://api.jquery.com/keydown/,https://api.jquery.com/keyup/,https://api.jquery.com/keypress/ …没有人检测到标签在iPad上的关键。

Tab键在ios本地应用程序(如Notes)中工作,Tab键在网页内的字段之间导航。 有没有一种方法来检测JavaScript中的任何人都知道的标签键?

编辑

这里是一个小提琴我扔在一起,所以你可以看到的代码和问题的行动: https : e.keyCode===9基本上我只是检查e.keyCode===9在桌面/笔记本电脑上工作。 在iPad上,它会注册标签键以外的所有按键。

EDIT2:

这是解决scheme的另一个选项。 我发现了一篇文章,介绍如何捕获所有事件。 下面是一个jsfiddle,这里是我发现这个概念的文章 。 请注意,在jsfiddle中,我返回了原始的addEventListener,因为添加一个空白监听器之后,你需要做的是什么。

的jsfiddle

 var oldAddEventListener = EventTarget.prototype.addEventListener; EventTarget.prototype.addEventListener = function(eventName, eventHandler) { oldAddEventListener.call(this, eventName, function(event) { if(event.target.id === "textarea" && event.keyCode===9){ event.preventDefault(); $(this).val($(this).val()+"\t"); $("#log").append("<li>Tab Pressed</li>"); } eventHandler(event); }); }; $("#textarea").keydown(function(e) { }); EventTarget.prototype.addEventListener = oldAddEventListener; 

编辑:

这里的testing键盘捕捉到标签keydown。 看看这个库,它应该解决你的问题。 直接使用这个库,或者通过挖掘代码来找出它是如何捕获iOS上的标签的。 http://dmauro.github.io/Keypress/

有一些硬件/function的关键问题阻碍了正常的标签按键。 按下OPTION + Tab会像正常一样激发你的处理器。 也许有某种设置导致了这一点,但显然你不能指望你的用户改变他们的设置来使用你的应用程序。 你可能会find某种方法来以某种方式利用它,但看起来这是默认行为,你坚持使用它。

有可能检测iOS设备,并找出某种标签默认行为的覆盖。 或者,您可以捕捉focusOut或模糊事件并检测是否不是由鼠标引起的。