在javascript中模拟多个按键

时间:2012-04-02 10:00:36

标签: javascript jquery asp.net

我想模拟用户按Tab键,然后在按Enter键时输入。我知道这听起来很糟糕,但是我有一个asp.net Web应用程序,它只允许我有一个带有runat =“server”的表单,所以当用户点击返回时,主表单会被提交。我在页面上有另一个文本框(理想情况下应该有它自己的形式,但不能因为它是asp),并且当从那里击中输入时,显然主要表单已提交。我能想到的最简单的方法是模拟制表符然后使用javascript输入,但我没有成功。我欢迎任何其他解决这个问题的方法。到目前为止,我已经模拟了按Tab键,但我不知道如何模拟多个按键。

这是我到目前为止的代码,我想回到9;需要用其他东西替换。 JQuery也会这样做。

function suppressEnter (e) {
    var keyPressed;
    if (window.event) { keyPressed = window.event.keyCode }  // IE
    else if (e) { keyPressed = e.which };  // Netscape
    if (keyPressed == 13) {
        return 9;
    }
    else {
        return true;
    }
}
编辑:返回9 + 13;适用于chrome,但不适用于IE

1 个答案:

答案 0 :(得分:0)

这样的事情会起作用:

function keyPress(e) {
    if (e.which == 13) {
         $(document).trigger(jQuery.Event('keydown', {which: 9}));
        // do something
        alert('Enter')
    }
    if (e.which == 9) {
         // do something
         alert('Tab');
    }

};

$(document).bind("keydown", keyPress);

我已经用小提琴编码 - http://jsfiddle.net/FAe6U/


关于@nnnnnn评论:

  

在我看来,你应该直接编码,而不是尝试   模拟按键。

试试这个:

var tabPress;
function keyPress(e) {
    if (e.which == 13) {
        if (tabPress == 1){
            e.preventDefault();
            alert('tab and enter');
        }
        else{e.preventDefault(); alert('enter')}
    }
    else if (e.which == 9) {
        e.preventDefault();
        tabPress = 1;
    };
};

function keyRelease(){tabPress = 0;}
$(document).bind("keydown", keyPress);
$(document).bind("keyup", keyRelease);

我已经用小提琴编码 - http://jsfiddle.net/f4Ybn/