gpt4 book ai didi

javascript - 调度 KeyboardEvent 无法在文本区域中生成字符

转载 作者:可可西里 更新时间:2023-11-01 02:46:12 24 4
gpt4 key购买 nike

var el = document.getElementById('action');

el.addEventListener('click', function()
{
var t = document.getElementById('text');
t.value = 'A should be typed later';
t.focus();
t.setSelectionRange(0, 0);

setTimeout(function()
{
t.dispatchEvent(new Event('keypress', {keyCode: 65}))
}, 800);

}, false);
<textarea id="text"></textarea>
<button id="action">
Do It
</button>

a 没有添加到 textarea 的开头,我错过了什么?

目的是真正模拟实际按下键盘上的键,而不是(重新)设置文本区域

更新:这不是 this question 的副本.

(i) 大多数答案使用 jQuery

(ii) 我无法从上述案例的答案中找到有效示例。

(iii) 实际上,上面的代码是从该页面派生的。

无论如何,这是否重复。您可以将问题解读为:为什么上面简单的代码不起作用?

最佳答案

必须同意 Heretic Monkey - 该事件将正确“触发”,但它实际上不会执行操作(安全 - 否则 javascript 可以相对容易地键入和输入各种废话!!!)。

尽管如此,您仍然可以创建事件并模拟结果 - 当然这有点笨拙,但这可能会有所帮助 - 这样您仍然可以玩冒泡和其他与事件相关的有趣方面,同时仍然得到您想要的结果正在寻找。不过我承认这很尴尬!

var el = document.getElementById('action');

el.addEventListener('click', function()
{
var t = document.getElementById('text');
t.value = 'A should be typed later';
t.focus();
t.setSelectionRange(0, 0);

setTimeout(function()
{
var event = document.createEvent('Event');
event.key = 65;
event.initEvent('keypress');
document.dispatchEvent(event);
}, 800);

}, false);

document.addEventListener('keypress', function(e){
let t = document.getElementById('text');
let oldText = t.value;

t.value = String.fromCharCode(e.key) + oldText;
t.focus();
t.setSelectionRange(1, 0);

});
<textarea id="text"></textarea>
<button id="action">
Do It
</button>

关于javascript - 调度 KeyboardEvent 无法在文本区域中生成字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com