每天我都有一个“健康和健身”步伐追踪器,需要在工作中输入。我正在尝试使用TamperMonkey使其大部分自动化。但是,我在获取输入字段来验证我的“值”时遇到麻烦。
我执行控制台命令:
document.getElementById("self-enter-steps-input").value = 3000;
产生:
但是,当我手动点击“保存”时,出现以下错误:
如果我以编程方式单击“保存”,则窗口会关闭,但数字不会注册。如果我按下“退格键”或手动输入一个额外的“ 0”,则整个字段都会得到验证,如果我按下“提交”,它将保存整个值。
我也尝试过将值输入为字符串,即
document.getElementById("self-enter-steps-input").value = "3000";
该字段经过验证,但未记录该值。但是,手动键入一个简单的退格键或额外数字就可以完成整个字段记录。
我尝试了一些模拟的“按键”事件,但均未成功。我是JS新手,因此可以提供任何帮助。
答案 0 :(得分:1)
可能在特定事件(例如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);
答案 1 :(得分:1)
您可能需要通过手动调度change
事件来手动触发变更侦听器:
const steps = document.getElementById("self-enter-steps-input");
steps.value = "3000";
const change = new InputEvent('change', { bubbles: true });
steps.dispatchEvent(change);
从外观上看,输入的验证发生在change
,blur
(或focusout
上,因为blur
不会冒泡)或{{ 1}}。请检查您的开发人员工具实际正在侦听哪个事件,并相应地调整我提供的代码。