网站搜索

javascript - 我如何在 Firefox 中检测回车键?


我能够在 Internet Explorer 10、Chromium 和 Opera 中成功检测到 Enter 键,但在 Firefox 中无法检测到。

我在这里找到了一些页面,不过它们在 Firefox 中也无法使用。我是不是哪里做错了?

TypeScript:

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,在控制台面板中我注意到(就在按下文本框中的 Enter 键之后):

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


<p>You said: dfgdfgdfgkjkhj</p>

请看下面的图片:

注意 页面本身并没有将 response 段的值更新为文本框中输入的内容,但是,Firebug 确实显示它已成功提交。

现在,由于这段代码在其他所有浏览器上都可以运行(IE、Chrome/Canary 以及 <、Opera、Safari),我的问题是,也许 Firefox 确实检测到了按键事件,但之后那部分没有工作吗?

答案#1

你应该将 onkeypress 改为 onkeydown,因为在某些实现中,onkeypress 只会在可打印字符上触发。

你现有的代码应该可以与 onkeydown 一起使用。

答案#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) ...
}