如何通过按键事件在输入中添加文本

时间:2019-05-06 20:02:21

标签: javascript events keydown

我正在Angular7项目中工作,我想编写测试以模拟用户输入的数据。为此,我想触发一些事件来填充要测试的输入。
示例:我想在输入中键入“ 12.50”,所以我可能应该发送5个事件:"1""2"".""5""0"

我知道我可以更新元素值,但是我真的想检查按键的行为(不允许使用某些字符,例如字母)。
我检查了很多例子和问题,但没有一个对我有用。有可能在JavaScript中进行这种思考吗?

1 个答案:

答案 0 :(得分:0)

您可以使用KeyboardEvent以编程方式创建 keydown 事件,并从您的<input>元素中分发该事件。

这将触发在<input>元素上设置的所有 keydown 处理程序,但不会具有更新{{1} }作为真正的 keydown

<input>
const txt = document.querySelector('#txt');

txt.addEventListener('keydown', ev => console.log(`key=${ev.key}`));

const btn = document.querySelector('#btn');
btn.addEventListener('click', () => {
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '1'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '2'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '.'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '5'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '0'}));
});