模拟内联onkeydown事件

时间:2017-11-14 16:56:42

标签: javascript input internet-explorer-8 internet-explorer-9 keydown

我有一个我无法控制的输入元素 例如:

<input tabindex="2" onkeypress="if(NotReady_Key())return;fnKeyPressNum(this,'N',0);"onkeydown="if(NotReady_Key())return;fnKeyDownNum(this,9,0);" id="someElement"/>

在Internet Explorer 8和9中,我试图找到一种方法使元素执行,就好像在输入上按下“enter”按钮一样,

我没能找到一种模拟印刷机的JS方法

但我在想,是否有可能获取内联方法:

onkeydown="if(NotReady_Key())return;fnKeyDownNum(this,9,0);"

从元素中,通过elementById获取元素, 并执行它就好像事件真的发生了? 这是我到目前为止尝试过的(我使用的是jquery):

 //get dom element
var element = $("#someElement")[0];
//simulate the event
//insert element as "this"
(function(){
fnKeyDownNum(this,9,0);
}).call(element);

但它似乎没有被视为有效,我忘记了什么? 我认为我还需要确保模拟除此之外的其他系统变量,以完全模拟“ENTER”事件。

我能做什么?

选项2当然是模拟在输入上按下“ENTER”的真正按键,但是到目前为止我在IE8 / 9中找不到这样做的方法,即使使用VBS也会接受任何方式一个选项。

请注意,我特别需要IE8和IE9支持。

1 个答案:

答案 0 :(得分:1)

如果您只需要使用元素调用fnKeyDownNum,请尝试尝试:

fnKeyDownNum(document.getElementById('someElement'),9,0);

但如果您需要真正模拟按键(因为,按键可以向字段添加输入,如果您在表单元素上按Enter键也具有提交表单的效果),则必须单独管理