当“.value = ***”似乎无法识别时,如何使用JS填写简单的输入字段?

How can I use JS to fill out a simple input field when the ".value = ***" doesnt seem to be recognized?

我每天都有一个 "health and fitness" 步数跟踪器需要在工作时输入。我正在尝试使用 TamperMonkey 来自动化其中的大部分。但是,我无法让输入字段验证我的 "value".

我执行控制台命令:

document.getElementById("self-enter-steps-input").value = 3000;

产生:

但是,当我手动点击 "Save" 时,出现以下错误:

如果我以编程方式点击 "Save",window 会关闭但号码不会注册。如果我点击 "backspace" 或手动输入额外的“0”,整个字段都会得到验证,如果我点击提交,它会保存整个值。

我也试过将值作为字符串输入,即

document.getElementById("self-enter-steps-input").value = "3000";

字段得到验证但值未被记录。然而,一个简单的退格键或手动输入的额外数字确实会生成整个字段记录。

我尝试了一些模拟的 "keypress" 事件但没有成功。我是 JS 新手,所以感谢您的帮助。

可能会在特定事件上验证字段,例如 change。设置值

后尝试触发
var inputElement = document.getElementById("self-enter-steps-input");
var e = document.createEvent('HTMLEvents');

inputElement.value = 3000;

e.initEvent('change', false, true);
inputElement.dispatchEvent(e);

您可能需要通过手动调度 change 事件来手动触发更改侦听器:

const steps = document.getElementById("self-enter-steps-input");
steps.value = "3000";
const change = new InputEvent('change', { bubbles: true });
steps.dispatchEvent(change);

从外观上看,输入验证发生在 changeblur(或者 focusout,因为 blur 不会冒泡),或者input。请检查您的开发者工具实际监听的是哪个事件,并相应地调整我给出的代码。