使用JS模拟按键输入的踩坑记录
坑 一开始在Google搜索了一番,找到了用jQuery的方案,代码量很少,看起来很美好很不错,结果,根本没用…… 我反复试了这几个版本: var e = $.Event('keyup') e.keyCode = 49 $('#btn').trigger(e) // 就是把 keycode 换成 which $('#btn').trigger($.Event('keyup', { which: 4
目录4 个章节
坑
一开始在Google搜索了一番,找到了用jQuery的方案,代码量很少,看起来很美好很不错,结果,根本没用……
我反复试了这几个版本:
var e = $.Event('keyup')
e.keyCode = 49
$('#btn').trigger(e)
// 就是把 keycode 换成 which
$('#btn').trigger($.Event('keyup', { which: 49 }))
一点用都没有……
然后又通过开发者调试工具看 event listener,发现输入框监听了input事件,我就试试先设置input的value,然后jQuery模拟触发事件能不能~
$('#btn').trigger('input')
结果也不行
解决
然后找到一个比较好的方法,使用js原生的InputEvent,如果是比较旧的Chrome,就用UIEvent代替,效果基本一样。
代码如下
使用InputEvent:
var dom = document.querySelector('#selector')
var evt = new InputEvent('input', {
inputType: 'insertText',
data: st,
dataTransfer: null,
isComposing: false
});
dom.value = '输入的内容';
dom.dispatchEvent(evt);
使用UIEvent:
var dom = document.querySelector('#selector')
var evt = new UIEvent('input', {
bubbles: false,
cancelable: false
});
dom.value = st;
dom.dispatchEvent(evt);
亲测可以完美实现
可以自己封装成函数比较方便调用,这部分代码就不贴了~
参考资料
- 有用的参考资料:http://fengyitong.name/index.php/archives/38/
- js+JQuery模拟键盘输入:https://blog.csdn.net/qq_45741976/article/details/102645358
- 简单获取keycode的网站:https://keycode.info/
欢迎交流
程序设计实验室专注于互联网热门新技术探索与团队敏捷开发实践,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

_EOF_
使用JS模拟按键输入的踩坑记录
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
在Next.js中集成swagger文档
Next.js 本来就不能直接用 Swagger,非要用还得自己折腾 API Routes?自动生成工具?手动写 Spec?这简直是在侮辱开发者。手动注释?这操作简直是在挑战耐心极限。
2025-09-01 · Web前端 · 约 1 分钟
在网页中使用Material-Design图标
什么是Material Design图标 MD大家都听过的吧,就是谷歌的Material Design设计,Material Design图标就是符合 MD设计语言的图标。 本文通过字体的方法在网页中显示Material Design图标。 What are material icons Material design system icons are simple, modern, friend
2021-12-18 · Web前端 · 约 1 分钟
React + TypeScript + Taro前端开发小结
前言 项目到一段落,先来记录一下,本文以前端新手的角度记录React、TypeScript、Taro相关技术的开发体验以及遇到的问题和解决方法。 之前总说要学React(这篇博客:代码使我头疼之React初学习),这次项目需要做H5前端+小程序,我终于能用上React了~ 使用React的开发框架之前就听过京东的Taro,所以就这个了,直接开码。 关于React 不错,感觉比Vue的模板写法自由很
2022-04-22 · Web前端 · 约 1 分钟
使用 swagger-typescript-api 在前端项目里生成请求代码
swagger-typescript-api?文档写得像草稿,还得自己摸索。那些花哨的模块化选项除了报错还能干嘛?老老实实生成单文件,配个客户端封装,省得每次折腾。
2025-11-03 · Web前端 · 约 1 分钟
讨论
共 0 条加载评论中…