Javascript - 带蓝牙键盘的 iPad Tab 键检测

2024-01-07

我有一个文本字段,用户可以在其中输入数据。他们可以使用 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(使用前将#替换为@)

Javascript - 带蓝牙键盘的 iPad Tab 键检测 的相关文章

随机推荐

  • 在 ConEmu 中启动或新选项卡时运行 autostart_console.bat?

    我在 Windows 8 Pro 上使用 ConEmu 强大的 cmd 在启动 ConEmu 或打开新选项卡时 如何 在哪里设置 conemu 运行 autostart console bat 谢谢 大多数情况下你需要使用以下命令Comma
  • 多通道图像中的 calcCovarMatrix 和未解决的断言错误

    我尝试从存储在 cv Mat 中的图像获取协方差矩阵 我需要它来计算马哈拉诺比斯距离并尝试进行一些颜色分割 这是我的代码 Mat covar selection meanBGR selection src roi calcCovarMatr
  • 为什么我在使用 Fabric python 库时收到低级套接字错误?

    当我运行命令时 fab H localhost host type 我收到以下错误 localhost Executing task host type localhost run uname s Fatal error Low level
  • 可滚动文本块大小恰好为 2 行高

    我需要显示文本 最多 2 行 没有可见的垂直滚动 然后在大于 2 行时显示滚动
  • ddply 中抛出的错误导致 R 崩溃

    我遇到了一个问题 当提供的函数抛出错误时 plyr 始终崩溃 gt require plyr Loading required package plyr Warning message package plyr was built unde
  • 为新项目选择“更好”或更熟悉的技术?

    我希望开始一个全新的项目 作为我的第一个独立可销售项目 我已经考虑了一段时间了 从广义上讲 它是一个基于 Web 的服务应用程序 而我的第一选择 服务器语言非常简单 我过去在 Java Web 应用程序上工作 对 Java 非常了解 然而
  • 使用 Jquery $.get() 逐行检索文本文件

    是否可以逐行检索txt文件内容 现在我正在使用这段代码 var file http plapla com pla txt function getFile get file function txt save txt responseTex
  • geom_wordcloud :这是一个白日梦吗

    我处理一些跨各种分组变量的文本数据 我正在考虑创建一种使用 Ian Fellows 制作多面文字云图的方法wordcloud包裹 我喜欢这种方式ggplot2方面的社会变量 我正在决定如何解决这个问题 多面词云图 是否可以使用 Fellow
  • 为什么使用隐藏字段?

    我经常看到 Web 应用程序中使用了很多隐藏字段 我所编写的代码是为了使用大量隐藏字段以及来回发送给它们的可见字段的数据值而编写的 虽然我不明白为什么使用隐藏字段 我几乎总能想出在不使用隐藏字段的情况下解决相同问题的方法 隐藏字段如何帮助设
  • Java 进程挂在 IOUtils 上。疑似死锁

    我有一个 java 进程挂在调用中IOUtils toString使用以下代码 String html try html IOUtils toString someUrl openStream utf 8 process hangs on
  • Vue.js 动态类名?

    我需要根据评论等级进行颜色降级 我希望在 Vue js 中完成一些事情 如下所示 div class review 在我的方法中我有这样的东西 reviewColor return green 不幸的是 这并没有为我提供 green 班级
  • 将解决方案中的所有项目重新定位到 .NET 4.5.2

    我在 Visual Studio 2012 中有一个解决方案 其中包含 170 个 C 项目 我需要将所有项目从 NET Framework 4 0 重新定位到 4 5 2 我更喜欢让 Visual Studio 通过进入每个项目的属性 更
  • 将 JSON 日期转换为 MM/DD/YYYY 格式?

    我的客户收到一个包含多列的电子表格 其中一列是 日期 只有日期被格式化为Date 1292291582263 0700 看起来是一个 JSON 日期 我需要在此电子表格代码 VBA 的其他位置转换并使用 MM DD YYYY 格式的 JSO
  • Bootstrap 3 - 带侧边栏的 Scrollspy

    我正在使用 Bootstrap 3 我想重新创建与侧边栏相同的功能Bootstrap 站点上的文档 http getbootstrap com javascript 下面是我的代码 它也在这里 http bootply com 82119
  • 使用带有信任证书的 ClickOnce 进行 WPF 应用程序部署

    我已使用测试证书将 WPF 应用程序部署到生产环境 现在 我必须更改测试证书并购买新证书 我浏览了 MSDN 网站 但无法得出结论该怎么办 所以 我需要澄清以下内容 在哪里购买这些证书文件以及它是什么类型的证书 我们必须在客户端系统上安装这
  • MSBuild 无法使用临时密钥签署 ClickOnce 清单(错误 MSB3326 和 MSB3321)

    我正在尝试构建 ClickOnceWindows 窗体 http en wikipedia org wiki Windows FormsWindows Server 计算机上的项目 NET 3 5 Visual Studio 2010 为了
  • create_proc_entry() 的替代方法是什么

    As create proc entry函数已被弃用 它的替代品是什么 我试图使用创建一个简单的过程条目create proc entry但得到了这个错误 错误 函数 create proc entry 的隐式声明 我摸索着create p
  • 如何创建支持空值的结构?

    我是 C 新手 在 C 中 我无法将结构的值设置为 null 如何创建支持 null 值的结构 通过使用 Generic Nullable 类来包装结构和值类型 可以使其可为空 例如 Nullable
  • 如何将字符串转换为字母数字并将空格转换为破折号? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想获取一个字符串 去掉所有非字母数字字符并将所有空格转换为破折号 每当我想将标题或其他字符串转换为 URL slug
  • Javascript - 带蓝牙键盘的 iPad Tab 键检测

    我有一个文本字段 用户可以在其中输入数据 他们可以使用 Tab 键 然后字段会缩进 除了带有蓝牙键盘的 ios 之外 这对所有设备都适用 如果我访问http www rapidtables com tools notepad htm htt