【问题标题】:Simulate keypress event (in plain js)模拟按键事件(纯js)
【发布时间】:2020-02-28 18:15:58
【问题描述】:

我正在寻找如何在js中模拟按键事件的示例。

我找到的示例都使用the deprecated Event.initEvent method。

当我尝试改用 the recommended KeyboardEvent 时,它不起作用 - 输入未更新。

<input id="myInput" />

const element = document.getElementById('myInput')
const keypressEvent = new KeyboardEvent('keypress', {
  code: 'KeyA'
})
element.dispatchEvent(keypressEvent)

上面的代码有什么问题或遗漏?元素是否需要先获得焦点或类似的东西?

【问题讨论】:

  • 您要触发什么类型的事件? JS 原生代码还是第三方代码?也许有一种明确的方法可以达到同样的效果。
  • @PedroLima 我正在尝试触发“按键”事件,如标题和代码中所述。我想模拟用户在输入字段中输入文本。
  • 请参阅this 答案或this answer。 dispatchEvent 不会更新你的输入内容
  • 更新了我的答案,您需要处理元素上的按下,调度的键盘事件将具有 keyCode 0。

标签: javascript dom dom-events


【解决方案1】:

function emitKey() {
  const element = document.getElementById('myInput');
  element.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));
}
function handleKeypress(target, event) {
  if(event.keyCode == 0 && event.key != "") {
    target.value += event.key;
  }
}

emitKey();
&lt;input id="myInput" onkeypress="handleKeypress(this, event);" /&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2023-03-24
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多