繁体   English   中英

如何根据上下文响应键盘输入?

[英]How to contextually respond to keyboard input?

这里的例子https://jsfiddle.net/ngecpjb9/

当按下N时,会选择下一个 Vue 组件。 但是,在输入输入元素时,如果我点击N ,它会“选择”下一个组件。 当专注于一个input时,这应该被禁用。

我的 Vue 应用程序在一个层次结构中有数百个组件,深度有好几层,是否有标准模式或库用于接受键盘输入的单独组件?

如果目标具有type ,您可以在onKey方法中进行验证,因为只有输入标签具有 type 属性

const onKey = (e) => {
  if (e.target.type !== undefined && e.code === 'KeyN') {
    active.value = (active.value + 1) % 3;
  }
};

您可以使用document.activeElement获取焦点元素,如果是文本输入,即input textareacontenteditable ,则忽略该键,如下所示:

const onKey = (e) => {

    const inputs = ['INPUT', 'TEXTAREA'];
    
    const isInput = document.activeElement === e.target &&
      (inputs.includes(e.target.tagName) ||
      e.target.hasAttribute('contenteditable'));
      
    if (!isInput && e.code === 'KeyN') {
        active.value = (active.value + 1) % 3;
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM