执行触发的按键javascript

执行触发的按键javascript,javascript,keypress,Javascript,Keypress,如何触发按键,以模拟真实的用户行为 如果我使用$('#input').trigger(jQuery.Event('keypress',{which:65}))我希望字母“a”出现在该输入中,但即使触发了按键,也不会出现任何内容 是否可以在不直接更改输入值的情况下显示按下的键 演示:对不起,不,DOM事件不是这样工作的。当您使用JavaScript触发事件时,它不是一个受信任的事件,这意味着它不会(除了后面提到的情况)更改DOM 当触发jQuery(或DOM)事件时,就像DOM告诉JavaScri

如何触发
按键
,以模拟真实的用户行为

如果我使用
$('#input').trigger(jQuery.Event('keypress',{which:65}))
我希望字母“a”出现在该输入中,但即使触发了按键,也不会出现任何内容

是否可以在不直接更改输入值的情况下显示按下的键


演示:

对不起,不,DOM事件不是这样工作的。当您使用JavaScript触发事件时,它不是一个受信任的事件,这意味着它不会(除了后面提到的情况)更改DOM

当触发jQuery(或DOM)事件时,就像DOM告诉JavaScript代码输入中按下了一个键一样。它通常不会改变DOM本身

触发时将执行默认行为的唯一事件是根据。根据规范:

除click或DOMActivate事件外,大多数不受信任的事件不应触发默认操作。这些事件触发激活触发器的默认操作(有关更多详细信息,请参阅激活触发器和行为);这些不受信任的事件的isTrusted属性值为false,但仍会启动任何向后兼容的默认操作

所有其他不受信任的事件的行为必须与对该事件调用了Event.preventDefault()方法的行为相同


您必须更改输入的
值(
.val()
,在jQuery中)。

假设浏览器分为三个部分:HTML、DOM和JavaScript。DOM是HTML和JS可以对话的中间人

当JavaScript加载一个元素时,当使用
document.getElementById
时,它会告诉DOM:“嘿,我需要这个元素!”。如果DOM找到它,它将返回名为DOM元素的特殊对象中的元素

当HTML更改时(您在字段中输入一些值),它会向DOM发送一条消息:“嘿,我的
值在这里不一样。”。因此DOM会更新其DOM元素

当JavaScript在
keypress
上添加事件监听器时,它会告诉DOM:“嘿,无论何时发送
keypress
事件,请告诉我。”

因此,当HTML更改时(在输入中完成了按键),它会告诉DOM:“嘿,那里有一个按键事件!”。因为DOM知道JS正在等待按键事件的更新,所以它告诉JS:“嘿,伙计,那里触发了一个事件。”

如果您从JS本身运行该事件,DOM将立即发送回JS:“嘿,触发了一个
keypress
事件,我想您可能会感兴趣。”。它不会转到HTML并更改它

为什么??因为DOM不信任JS。它知道JS是个坏孩子。这里的关键词是“信任”。正如@Benjamin所指出的,存在值得信任的事件。虽然他们很少。还有“向后兼容的受信任者”


是的,DOM乱七八糟。

@Juhana OP想要输入一个键,相关的问题是更换一个按键。此外,在相关问题中,他没有使用价值的限制。这个问题是关于DOM事件如何工作的,这个问题是关于如何在不受限制的情况下完成某些事情。