如何在Firefox中检测Enter键?

时间:2012-10-29 15:33:04

标签: javascript html events firefox typescript

我能够成功检测到Internet Explorer 10,Chromium和Opera中的 Enter 键,但不能用于Firefox。

我在这里找到了几页,但它们在Firefox中也不起作用。我做错了什么,这里?

打字稿:

function HandleKeyPress(e) {
    var key = e.keyCode || e.which;

    if (key == 13) {
        // We got this.
        var textbox = <HTMLInputElement>document.getElementById("tbox");
        sayHello(textbox.value);
    }
}

生成的JavaScript(相同):

function HandleKeyPress(e) {
    var key = e.keyCode || e.which;
    if(key == 13) {
        var textbox = document.getElementById("tbox");
        sayHello(textbox.value);
    }
}

HTML:

<input type="text" value="dfgdfgdfg" id="tbox" onkeypress="HandleKeyPress(event)" />

我不能使用任何外部库,我必须在纯JavaScript(或编译为纯JS的语言)中执行此操作。


更新

<小时/> 我刚刚安装了Firebug并且在Consolw窗格中我注意到了(在文本字段上按 Enter jey之后:

http://localhost:1058/Default.cshtml?someValue=dfgdfgdfgkjkhj


<p>You said: dfgdfgdfgkjkhj</p>

见下图:

enter image description here

注意页面本身尚未将response段落的值更新为文本框中输入的内容,,Firebug确实说明了它已成功发布。

现在,由于此代码适用于所有其他浏览器(IE,Chrome / Canary和&lt;,Opera,Safari),我的问题是,可能Firefox 检测到关键事件,但部分那不起作用是在那之后?

3 个答案:

答案 0 :(得分:5)

您应该将onkeypress更改为onkeydown,因为onkeypress仅在某些实现中触发可打印字符。

您现有的代码应与onkeydown一起使用。

答案 1 :(得分:2)

试试这个:

<input type="text" value="dfgdfgdfg" id="tbox" onkeypress="HandleKeyPress(event)" />

将函数HandleKeyPress定义为:

function HandleKeyPress(evt){
    var key = evt.which || evt.charCode || evt.keyCode || 0;

    if (key == 13) ...
}

答案 2 :(得分:1)

你可以通过使用这样的jQuery来实现

$(".input").keyup(function (e) {
    if (e.keyCode == 13) {
        // Whatever
    }
});