javascript - 协调 Firefox 斜杠处理和键代码

标签 javascript jquery

我有一个网页,用户应该可以在任何地方输入并跟踪他们的输入。一个问题是 firefox 中的斜线键“/”是打开搜索的快捷方式。这对我来说是不可取的。我还没有找到一种方法来捕获搜索功能并且仍然将输入添加到我的跟踪中。我在 keypress 上将输入添加到堆栈。

keydown...preventDefault 在 FireFox 中效果最好,但问题是在 Chrome 中,keypress 由于某种原因没有触发(不确定为什么 preventDefault 会阻止它,但确实如此)。如果我可以自己将斜杠添加到输入堆栈,这会没问题。但是 Firefox 已经添加了它,因为 keypress 仍然被触发。 stopPropagation 也不会阻止 keypress 在 FireFox 中触发。 $(document).keypress(e)keydown 方法中也什么都不做。

我遇到的另一个问题是“退格键”应该从堆栈中删除,但我使用 String.fromCharCode(e.which) 添加到堆栈并将数据添加到 input type="text" 用户可以看到的字段。在 Chrome 中,这完美地工作,但在 FireFox 中,它添加了一个代表退格键的字符,然后立即将其删除,以防止删除另一个字符。输入中有“backspace”和“f5”等字符也是不可取的。有没有办法判断 fromCharCode 值是否对文本字段有效?我认为正在发生的事情是 Chrome 会自动执行此操作。

编辑:这可能有帮助,但 FireFox 显然会在我的网页上触发 keypress 之前的 keydown (Chrome 则相反)。这是不寻常的。

最佳答案

解决了这个问题。我有一个触发捕获斜杠的 noslash 变量:

else if (e.which == '191' && !noslash) {
   e.preventDefault();
   $typing.val($typing.val() + '/');
}

至于第二部分的问题,我干脆拒绝

[^-a-z0-9`~!@#$%^&*()_+=\\|/'";:,<.>?\[\]{}]

关于javascript - 协调 Firefox 斜杠处理和键代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948176/

相关文章:

javascript - 两个数组相等测试

javascript - 点击用茧销毁后,如何在不销毁记录的情况下重新计算发票

javascript - 格式化 jquery.datetimepicker 文本字段

javascript - 变量范围的问题 (JavaScript)

javascript - 在 Next.js 应用程序中找不到 API 路由(找不到该页面)

javascript - 如何使用 Playwright 保存请求的响应正文?

javascript - 如何隐藏Google折线图的线条?

javascript - jQuery .focus() 不起作用

javascript - jQuery 将文本插入光标位置的文本区域

jquery - 为什么禁用属性在 Bootstrap-select 上不起作用?