javascript dispatchEvent Keypress, returns true , but input field is still empty javascript的dispatchEvent Keypress,返回true,但输入字段仍然为空。

3 浏览
0 Comments

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 );

0