如何通过javascript将输入字段标记为更改或编辑?

How to mark an input field as changes or edited via javascript?

提问人:user3419148 提问时间:11/17/2023 最后编辑:mplungjanuser3419148 更新时间:11/17/2023 访问量:22

问:

我有一个用户脚本,可以将数据输入到html表单中。喜欢

document.getElementById('username').value = '[email protected]';

但是此表单有一些花哨的检查,以检测字段是否已更改。因此,当我通过 javascript 填充字段时,会出现“空值”之类的错误,但是当我在字段中键入或粘贴相同的文本时,它就可以工作了。

因此,我需要以某种方式将该字段标记为“已更改”或模仿一些实际输入字段以通过检查,例如伪造退格键以删除最后一个字符。

这怎么能做到?

JavaScript 输入

评论

0赞 Veterini 11/17/2023
你能给出一些你正在使用的代码示例吗?还有你到目前为止尝试过什么?
0赞 mplungjan 11/17/2023
可能的欺骗:let event = new Event('change'); let userName = document.getElementById('username'); userName.value = '[email protected]'; userName.dispatchEvent(event);

答:

0赞 Fito 11/17/2023 #1

这是一个非常常见的问题,发生这种情况是因为当您以物理方式向表单添加一些输入时,会触发一个事件(更改或输入,甚至是 keyup 事件,具体取决于您执行的操作),但是,当您使用 JS 将值添加到输入时,这些事件不会触发,并且表单不知道您更改了值。

对我来说,当我发现这个问题时,我使用 dispatchEvent() 方法创建了一个新事件。

例如:

// Get the input (capture)
const inpt = document.getElementById('username');

// Set the value
inpt.value = '[email protected]';

// Create the event
inpt.dispatchEvent(new Event('input'));

此外,我发现有时将“捕获”与“设置”分开更有利于代码正常工作。

让我知道它是否有效!

评论

0赞 mplungjan 11/17/2023
我已经评论过了。如果这是答案,那么这是一个巨大的骗局
0赞 mplungjan 11/17/2023
此外,触发更改可能比输入或两者兼而有之更有用
0赞 user3419148 11/17/2023
我尝试了dispatchevent,但它没有用。表格比我更聪明。但是,我发现了一个使用查询参数的工作,这对我有用。