javascript - 尝试防止从 Mac 键盘输入死键

标签 javascript jquery jquery-events

我正在尝试使用组合 alt+i 创建快捷方式,该组合通常会键入死键 ˆ,我尝试了以下:

$(document).ready(function () {
    $("#txtInput").keydown(
       function (event) {
           if (event.which == 229 && event.altKey === true) {
               alert(event);
               event.preventDefault();
               event.stopPropagation();
           }
       }
   ); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<input id="txtInput" type="text" />

条件内的代码执行,但 ˆ 仍然在我的 "#txtInput" 中输入。 是否可以阻止输入此文本?

最佳答案

在寻找防止 Dead 键的方法时看到这篇文章(例如组合使用 ' 来获取特殊字符,例如 ā、ē、ī 等) )在 MacOS 上输入到文本input

没有一个解决方案像OP提到的那样有效 - 它们无法阻止浏览器/操作系统启动字符组合

我发现的一种巧妙的方法是模糊 Dead 按键上的输入,然后在微不足道的延迟后再次将其聚焦回来。在我的例子中,与通过操作 event.target.value 来删除输入的符号相比,这会导致更少的闪烁。

const input = document.getElementById('input')

input.addEventListener('keydown', e => {
  console.log(e.key)

  if (e.key === 'Dead') {
    input.blur()
    setTimeout(() => input.focus())
  }
})
<input id="input" type="text">

这还将阻止 ' 转换为的下一个特殊字符出现在输入中

关于javascript - 尝试防止从 Mac 键盘输入死键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61255621/

相关文章:

javascript - 使用 Javascript 的 setAttribute() 背后的原因是什么?

javascript - 向类或单个元素添加回调

javascript - 如何从段落中获取文本,同时在每个段落的开头保留空格?

jquery - 如何使用 jquery 取消绑定(bind)所有事件

javascript - 如何使用 jQuery 切换(隐藏/显示)侧边栏 div

javascript - 如何将输入值从 HTML 传递到 JavaScript 以用于切换包含函数的情况

jquery - 如何通过名称获取元素类型?

javascript - toggleclass 不工作?

jquery - 多个动态输入添加事件jquery并调用ajax

javascript - 阻止表单提交