JS模拟键盘输入的问题

ajmxj 2018-02-04 12:32:00
比如我想在百度搜索框中模拟键盘输入abc三个字符,要怎么实现的,不是直接赋值的那种,要模拟键盘输入,网上找了几个函数,实现不了,我用的是360浏览器。

这是我找的一个函数,没有效果
引用
function fireKeyEvent(el, evtType, keyCode){
var doc = el.ownerDocument,
win = doc.defaultView || doc.parentWindow,
evtObj;
if(doc.createEvent){
if(win.KeyEvent) {
evtObj = doc.createEvent('KeyEvents');
evtObj.initKeyEvent( evtType, true, true, win, false, false, false, false, keyCode, 0 );
}
else {
evtObj = doc.createEvent('UIEvents');
Object.defineProperty(evtObj, 'keyCode', {
get : function() { return this.keyCodeVal; }
});
Object.defineProperty(evtObj, 'which', {
get : function() { return this.keyCodeVal; }
});
evtObj.initUIEvent( evtType, true, true, win, 1 );
evtObj.keyCodeVal = keyCode;
if (evtObj.keyCode !== keyCode) {
console.log("keyCode " + evtObj.keyCode + " 和 (" + evtObj.which + ") 不匹配");
}
}
el.dispatchEvent(evtObj);
}
else if(doc.createEventObject){
evtObj = doc.createEventObject();
evtObj.keyCode = keyCode;
el.fireEvent('on' + evtType, evtObj);
}
}

fireKeyEvent(kw, 'keydown', 49);


...全文
2469 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
onchange 事件不会不触发,除非disabled and readOnly了
Go 旅城通票 2018-03-21
  • 打赏
  • 举报
回复
模拟键盘输入不可能的,应该触发对应的事件。最新版本的谷歌和firefox测试了直接js设置输入框的值也会触发autocomplete的

Web开发学习资料推荐
Web前端开发
jquery全年日期选择器日历插件
ajmxj 2018-03-20
  • 打赏
  • 举报
回复
顶一下!!!!!
ajmxj 2018-02-13
  • 打赏
  • 举报
回复
你这个我试了下触发不了,还是要有模拟键盘输入好!
Hello World, 2018-02-06
  • 打赏
  • 举报
回复
触发可以用JQuery的trigger,先赋值再触发,比如:

$('#txtbox').val('abc').trigger('change');
ajmxj 2018-02-05
  • 打赏
  • 举报
回复
引用 1 楼 apollokk 的回复:
得先聚集到控件吧,不然你发送的字符都没地方显示
fireKeyEvent(kw, 'keydown', 49); kw就是input元素的ID
Hello World, 2018-02-05
  • 打赏
  • 举报
回复
得先聚集到控件吧,不然你发送的字符都没地方显示
ajmxj 2018-02-05
  • 打赏
  • 举报
回复
引用 3 楼 apollokk 的回复:
你说的模拟键盘输入具体是什么?
就是在指定的文本框里输入字母或者数字,主要是用于某些文本框直接赋值value不触发事件,所以想用模拟键盘输入
Hello World, 2018-02-05
  • 打赏
  • 举报
回复
你说的模拟键盘输入具体是什么?

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧