我正在Angular7项目中工作,我想编写测试以模拟用户输入的数据。为此,我想触发一些事件来填充要测试的输入。
示例:我想在输入中键入“ 12.50”,所以我可能应该发送5个事件:"1"
,"2"
,"."
,"5"
,"0"
我知道我可以更新元素值,但是我真的想检查按键的行为(不允许使用某些字符,例如字母)。
我检查了很多例子和问题,但没有一个对我有用。有可能在JavaScript中进行这种思考吗?
答案 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'}));
});