1

EnterInternet Explorer 10、Chromium、Operaでキーを正常に検出できますが、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をインストールしたところ、Consolwペインで気づきました(テキストフィールドでjeyを押した直後Enter

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

これを試して:

<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) ...
}
于 2012-10-29T15:41:41.240 に答える
1

このようなjQueryを使用して達成できます

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