当“.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);
从外观上看,输入验证发生在 change
、blur
(或者 focusout
,因为 blur
不会冒泡),或者input
。请检查您的开发者工具实际监听的是哪个事件,并相应地调整我给出的代码。
我每天都有一个 "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);
从外观上看,输入验证发生在 change
、blur
(或者 focusout
,因为 blur
不会冒泡),或者input
。请检查您的开发者工具实际监听的是哪个事件,并相应地调整我给出的代码。