首页 > 解决方案 > 自动化将在文本框中键入的键盘事件

问题描述

我需要自动化按键。“这并不难,”你可能会说,但听着,还有更多。我不想仅仅触发一个keydownkeypressed事件。我需要使用 JavaScript 代码在文本框中实际键入一个字符。

现在,在你给我回复之前,element.value = "Hooray!"请意识到这不是我想要的。.value如果我使用or或其他方式更改它,我尝试使用代码输入的文本框将无法识别我的输入.innerText。还需要注意的是,文本框的任何内容都无法更改。我必须处理它目前的情况。

因此,我如何使用 JavaScript(不是 jQuery!)在文本框中键入文本,就好像我自己使用键盘键入一样?

编辑

我说.value.innerText不起作用的原因是因为它不会触发文本框的文本验证。所以我真正要问的是如何以编程方式“输入”某些内容,以便触发文本验证?

标签: javascript

解决方案


我们有一个类似的案例。不是不能以编程方式设置文本字段,而是设置它不会触发输入验证。直到/除非验证完成,否则不会启用继续按钮。

我们不是通过以编程方式键入每个键来解决这个问题,而是通过设置文本字段的值,然后假装用户通过事件粘贴它。像这样:

// Somehow get a reference to your text field in question
var textField = document.getElementById('myAwesomeField')

// Set the value to what you need
textField.value = 'Some valuable input'

// Programmatically create a 'paste' event
var pasteEvent = new ClipboardEvent('paste')

// Pretend that the user pasted, by having the textField dispatch the event
textField.dispatchEvent(pasteEvent)

一些相关阅读:剪贴板事件dispatchEvent()。总体上了解事件和事件的概述也会有所帮助。是一个介绍,但我相信可以找到更多。一旦你掌握了窍门,这里有一堆事件可以激发你对所有可以触发和/或反应的事件的兴趣。


推荐阅读