自动执行将在文本框中键入的键盘事件

时间:2018-12-06 00:12:52

标签: javascript

我需要使按键自动化。您可能会说:“那并不难,但请听,还有更多。我不想只触发keydownkeypressed事件。我实际上需要使用JavaScript代码在文本框中输入字符。

现在,在您给我类似element.value = "Hooray!"的答复之前,请意识到这不是我想要的。如果我使用.value.innerText或其他方式更改输入框,我尝试使用代码输入的文本框将无法识别我的输入。还要注意,关于文本框的任何内容都无法更改。我必须使用它的当前状态。

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

编辑

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

2 个答案:

答案 0 :(得分:1)

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

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

// 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)

一些相关的读物:Clipboard eventsdispatchEvent()。总体上了解事件和事件的概述也将有所帮助。 This是一个简介,不过我敢肯定可以找到更多。一旦掌握了窍门,here's a bunch of events就会激发您对可以触发和/或反应的所有事件的食欲。

答案 1 :(得分:0)

您可以使用.value更改Value,然后手动触发验证功能。