javascript dispatchEvent Keypress, returns true , but input field is still empty javascript的dispatchEvent Keypress,返回true,但输入字段仍然为空。
javascript dispatchEvent Keypress, returns true , but input field is still empty javascript的dispatchEvent Keypress,返回true,但输入字段仍然为空。
我需要在输入框里触发或者说分发一个KeyPress事件,
我尝试过很多方法,包括"initKeyboardEvent","initKeyEvent","createEvent"等,甚至找到了类似问题的答案,但是似乎都无效,无论是在火狐还是在谷歌浏览器上(我想它们可能已经废弃了),就像"KeyboardEvent.initKeyEvent()"一样,已经被废弃了。
就像我们有
document.getElemntByID('button').click();
我想做一些类似的操作:
document.getElemntById('email').keyPress(charCode('a'));
但是不幸的是,无论如何我都无法使keypress起作用。
我知道在jQuery中是可以实现的,但是我想用纯JavaScript来做,毕竟jQuery在后端也使用了JavaScript,所以应该有办法,如果我没错的话。
====更新=========
我想知道
window.addEventListener('keydown', keyDown(), true);
function keyDown(){
alert('keydown');
}
var fireOnThis = document.getElementById('pwph');
if( window.KeyEvent ) {
var evObj = document.createEvent('KeyEvents');
evObj.initKeyEvent( 'keydown', true, true, window, false, false, false, false, 72, 0 );
} else {
var evObj = document.createEvent('UIEvents');
evObj.initUIEvent( 'keydown', true, true, window, 1 );
evObj.keyCode = 72;
}
fireOnThis.dispatchEvent(evObj);
这段代码返回true,而且事件监听器也捕获到了这个事件,那为什么我在输入框里看不到任何文本呢?
====================更新============================
这对其他人来说似乎是有效的,但为什么它在返回true后仍然使我的文本框为空呢?
// 创建事件
var evt = document.createEvent( 'KeyboardEvent' );
// 初始化选项
evt.initKeyEvent(
"keypress", // 事件类型
true, // 是否可以冒泡
true, // 是否可以取消
null, // 视图上下文(通常是window或null)
false, // 是否按下Ctrl键
false, // 是否按下Alt键
false, // 是否按下Shift键
false, // 是否按下Meta键
9, // keyCode
0); // charCode
// 在元素上分发事件
el.dispatchEvent( evt );