在页面中自动填写表单时,直接给文本框 input 元素赋值有时候无法提交,原因是此方式无法触发键盘事件。
可使用 JavaScript 模拟按键事件,但是 UIEvent.initUIEvent 和 KeyboardEvent.initKeyEvent() 等方法在最新的 Chrome 浏览器中已废弃;需使用最新标准 KeyboardEvent 实现。
模拟按键事件代码如下:
function fireKeyEvent(element, evtType, keyChar) {
element.focus();
var KeyboardEventInit = {key:keyChar, code:"", location:0, repeat:false, isComposing:false};
var evtObj = new KeyboardEvent(evtType, KeyboardEventInit);
element.dispatchEvent(evtObj);
}
JavaScript 触发按键事件不会使字母自动出现在文本框中,要显示输入文本的方法:
1、增加监听按键事件,触发时给 input 元素赋值;
2、直接将待输入文本赋值给 input 元素,再依次触发每个字符的键盘事件即可。