javascript - 自动化将在文本框中键入的键盘事件
问题描述
我需要自动化按键。“这并不难,”你可能会说,但听着,还有更多。我不想仅仅触发一个keydown
或keypressed
事件。我需要使用 JavaScript 代码在文本框中实际键入一个字符。
现在,在你给我回复之前,element.value = "Hooray!"
请意识到这不是我想要的。.value
如果我使用or或其他方式更改它,我尝试使用代码输入的文本框将无法识别我的输入.innerText
。还需要注意的是,文本框的任何内容都无法更改。我必须处理它目前的情况。
因此,我如何使用 JavaScript(不是 jQuery!)在文本框中键入文本,就好像我自己使用键盘键入一样?
编辑
我说.value
或.innerText
不起作用的原因是因为它不会触发文本框的文本验证。所以我真正要问的是如何以编程方式“输入”某些内容,以便触发文本验证?
解决方案
我们有一个类似的案例。不是不能以编程方式设置文本字段,而是设置它不会触发输入验证。直到/除非验证完成,否则不会启用继续按钮。
我们不是通过以编程方式键入每个键来解决这个问题,而是通过设置文本字段的值,然后假装用户通过事件粘贴它。像这样:
// 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()。总体上了解事件和事件的概述也会有所帮助。这是一个介绍,但我相信可以找到更多。一旦你掌握了窍门,这里有一堆事件可以激发你对所有可以触发和/或反应的事件的兴趣。
推荐阅读
- tensorflow - 为什么分类结果集中在CNN模型中的一类?
- javascript - 实现自定义实用程序而不是`window.location.assign`
- javascript - 打字稿 - 不可分配给学生打字
- powershell - 比较 2 个大文件,用 powershell 还是其他方式?
- angular - Ionic 3 FireReader 不工作,但 Ionic 4 可以
- arrays - R 反向复位计数器到复位时间
- validation - 如何测试字符串输入?(Dyalog APL)
- soap - WSO2:流处理器
- javascript - 页面提交后将焦点设置到 IG 中先前选择的行
- sql - 带有 2 个连接的 SQL DELETE?