我正在try 使用Java脚本以编程方式按Enter键,但只有在输入的值更新之后,也使用Java脚本.

它正在成功更新值,但未按Enter键.

请注意,有多个inputs,并且以下代码位于所有inputs的循环中.

// update value of input
document.querySelectorAll("input[type='number']")[index].value = 5;
// press enter key
var el = document.querySelectorAll("input[type='number']")[index];
var ev = new KeyboardEvent('keydown', {altKey:false,
    bubbles: true,
    cancelBubble: false, 
    cancelable: true,
    charCode: 0,
    code: "Enter",
    composed: true,
    ctrlKey: false,
    currentTarget: null,
    defaultPrevented: true,
    detail: 0,
    eventPhase: 0,
    isComposing: false,
    isTrusted: true,
    key: "Enter",
    keyCode: 13,
    location: 0,
    metaKey: false,
    repeat: false,
    returnValue: false,
    shiftKey: false,
    type: "keydown",
    which: 13});
el.addEventListener('keydown', function () { 
    console.log("Press enter now");
    el.dispatchEvent(ev);
});

附注-这是一个Chrome扩展,操作网页的输入,这些输入需要按下Enter键,购物车才能更新.

推荐答案

我认为您正确地看到了这个问题;您正试图在一个keydown监听程序中调度keydown个事件,这将以无限循环结束.

如果要在以编程方式更新值之后调度keydown事件,则应将调度行放在值更改行之后:

document.querySelectorAll("input[type='number']")[index].value = 5;
el.dispatchEvent(new Event('keydown'));

如果你不是触发价值变化的人,它就会有一点不同(也更复杂).以下是解决这个问题的question 1个和question 2个.

Javascript相关问答推荐

将json数组项转换为js中的扁平

Google Apps脚本中的discord邀请API响应的日期解析问题

使用Java脚本根据按下的按钮更改S文本

阿波罗返回的数据错误,但在网络判断器中是正确的

IF语句的计算结果与实际情况相反

对网格项目进行垂直排序不起作用

正则表达式,允许我匹配除已定义的子字符串之外的所有内容

JQuery Click事件不适用于动态创建的按钮

检索相加到点的子项

在JS中动态创建对象,并将其追加到HTML表中

如何在Java脚本中对列表中的特定元素进行排序?

当从其他文件创建类实例时,为什么工作线程不工作?

如何使用抽屉屏幕及其子屏幕/组件的上下文?

在Java脚本中录制视频后看不到曲目

每隔3个项目交替显示,然后每1个项目交替显示

我怎样才能得到一个数组的名字在另一个数组?

为什么NULL不能在构造函数的.Prototype中工作

如何在每隔2分钟刷新OKTA令牌后停止页面刷新

为什么我的SoupRequest";被重置为初始值,以及如何修复它?

如何将缓冲区数组转换回音频