我有一个文本字段,用户可以在其中输入数据。他们可以使用 Tab 键,然后字段会缩进。除了带有蓝牙键盘的 ios 之外,这对所有设备都适用。
如果我访问http://www.rapidtables.com/tools/notepad.htm http://www.rapidtables.com/tools/notepad.htm,我可以在台式机/笔记本电脑上使用选项卡。但在我的 iPad 上……没有骰子。
如果我访问https://api.jquery.com/keydown/ https://api.jquery.com/keydown/, https://api.jquery.com/keyup/ https://api.jquery.com/keyup/, https://api.jquery.com/keypress/ https://api.jquery.com/keypress/...他们都没有检测到 iPad 上的 Tab 键。
Tab 键适用于 iOS 本机应用程序(例如 Notes),并且 Tab 键可以在网页内的字段之间导航。有没有一种方法可以检测任何人都知道的 Javascript 中的 Tab 键?
EDIT
这是我整理的一个小提琴,以便您可以看到实际的代码和问题:https://jsfiddle.net/9jv0bmbx/1/ https://jsfiddle.net/9jv0bmbx/1/基本上我只是检查一下e.keyCode===9
适用于台式机/笔记本电脑。在 iPad 上,它会注册每个键exceptTab 键。
EDIT2:
这是解决方案的另一种选择。我发现一篇文章介绍了如何捕获所有事件。下面是一个jsfiddle,这是article https://css-tricks.com/capturing-all-events/我发现了这个概念。请注意,在 jsfiddle 中,我返回了原始的 addEventListener,因为在添加空白侦听器后您所需要的已经完成。
jsfiddle https://jsfiddle.net/9jv0bmbx/2/
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;
EDIT:
这里的测试键盘捕获 Tab 键按下。看看这个库,它应该可以解决你的问题。要么直接使用该库,要么通过深入研究代码找出它如何在 iOS 上捕获选项卡。http://dmauro.github.io/Keypress/ http://dmauro.github.io/Keypress/
存在某种硬件/功能键问题妨碍正常的 Tab 键按下。按 OPTION+Tab 将像平常一样触发您的处理程序。也许有某种设置导致了这种情况,但显然您不能指望您的用户更改其设置来使用您的应用程序。您也许能够找到某种方法来以某种方式利用这一点,但似乎这是默认行为,并且您必须坚持下去。
或许可以检测 iOS 设备并找出某种替代选项卡默认行为的方法。或者您可以捕获 focusOut 或模糊事件并检测它是否不是由鼠标引起的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)