1

我能够成功检测到EnterInternet Explorer 10、Chromium 和 Opera 中的密钥,但不能在 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>

见下图:

在此处输入图像描述

请注意,页面本身并没有将response段落的值更新为在文本框中输入的值,但是,Firebug 确实说它已成功发布。

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

4

3 回答 3

5

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

您现有的代码应该与onkeydown.

于 2012-10-29T15:47:44.560 回答
3

try this:

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

And define the function HandleKeyPress as:

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

    if (key == 13) ...
}
于 2012-10-29T15:41:41.240 回答
1

您可以像这样使用jQuery来完成

$(".input").keyup(function (e) {
    if (e.keyCode == 13) {
        // Whatever
    }
});
于 2012-10-29T15:35:38.297 回答