javascript dispatchEvent Keypress,returns true ,但输入字段仍然为空

javascript dispatchEvent Keypress, returns true , but input field is still empty

我需要在输入框中触发或说出 dispatchEvent KeyPress, 我已经尝试了很多“initKeyboardEvent”、“initKeyEvent”、“createEvent”,甚至我找到了类似问题的答案,但似乎没有任何效果,无论是在 firefox 中,还是在 chrome 中(我认为它们可能已被弃用),因为 KeyboardEvent.initKeyEvent(),已弃用。

就像我们有

document.getElemntByID('button').click();

我想做类似的事情:

document.getElemntById('email').keyPress(charCode('a'));

但不幸的是,我无法以任何方式使按键工作。

我知道在 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);

这段代码returns我是真的,连eventListner都在捕捉这个事件,那为什么我在输入框中看不到任何文字? ====================更新============================
这似乎对每个人都有效,但为什么即使在返回 true 后它仍将我的文本字段留空?

// Create the event
var evt = document.createEvent( 'KeyboardEvent' );

// Init the options
evt.initKeyEvent(
             "keypress",        //  the kind of event
              true,             //  boolean "can it bubble?"
              true,             //  boolean "can it be cancelled?"
              null,             //  specifies the view context (usually window or null)
              false,            //  boolean "Ctrl key?"
              false,            //  boolean "Alt key?"
              false,            //  Boolean "Shift key?"
              false,            //  Boolean "Meta key?"
               9,               //  the keyCode
               0);              //  the charCode

// Dispatch the event on the element
el.dispatchEvent( evt );

我想你想在输入框上添加事件监听器

           var element = document.getElementById("email");

            document.getElementById("email").addEventListener("keypress", function() {
                console.log("keypresh")

            })
            var evt = document.createEvent("KeyboardEvent");
            evt.initEvent("keypress", false, true);
            // adding this created a magic and passes it as if keypressed
            element.dispatchEvent(evt);

我试图在 Input 元素内调度 keyPress 事件以传递数据绑定条件(KnockOut js)事件,但不幸的是 KeyPress 对我不起作用,而是我使用 change 事件代替它。

所以我这样做了:

element = document.getElementById('idTxtBx_SAOTCS_ProofConfirmation');

    element.value = '8885';   // this alone was not working as keypress.

    var evt = document.createEvent("HTMLEvents"); 
        evt.initEvent("change", false, true); // adding this created a magic and passes it as if keypressed
        element.dispatchEvent(evt);

所以 .valuechange 事件一起发生,伪造的 inputText 或按键事件成功。