我知道之前有人问过与此类似的问题,但我能找到的所有答案要么在 jQuery 中,要么似乎不再有效。我试过做不同的
function send(char, elem) {
let e = new KeyboardEvent('keydown', {key: char});
elem.dispatchEvent(e);
}
但运气不好。它分派(dispatch)并触发适当处理程序的事件,但如果输入/文本区域元素获得焦点,则不会键入键。
最佳答案
您不能通过代码触发的事件进行键入 - 但是,您可以设置一个监听器并创建一个自定义事件,以免将触发事件与常规按键混淆。
$("#button").on("click", function() {
$("#input").trigger({
type: "myKeypress",
which: "A".charCodeAt(0)
});
});
$("#input").on("myKeypress", function(e) {
$(this).val($(this).val() + String.fromCharCode(e.which));
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<input type="text" id="input">
<button id="button">Type A</button>
您也可以使用所有键来实现这一点:
$("#button").on("click", function() {
$("#input").trigger({
type: "myKeypress",
which: prompt("Enter a letter").charCodeAt(0)
});
});
$("#input").on("myKeypress", function(e) {
$(this).val($(this).val() + String.fromCharCode(e.which));
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<input type="text" id="input">
<button id="button">Type a letter</button>
关于javascript - 如何在浏览器窗口中使用 vanilla JavaScript 模拟键盘按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608165/