0

昨日実際に投稿された SO に関する投稿を見つけました (今は見つけられません)。以下のコードは機能するはずですが、機能しません。以下の「handleRtnKey(e)」関数が呼び出されないのはなぜですか?

<input type="text" id="zer" onkeyup="handleRtnKey(e)"/>

// my javascript function -- by the way, I will not be using jquery.
function handleRtnKey(e)
{
    alert("Just entered handleRtnKey()");

    if (!e) 
    {
        e = window.event;   // resolve event instance for IE    
    }

    alert("Just entered handleRtnKey(), e.keyCode is: " + e.keyCode);
    alert("Just entered handleRtnKey(), e is: " + e);

    if (e.keyCode == '13')
    {
      alert("handleRtnKey: got the RTN key up event.");
      return false;
    }
}

アラートは発生しません。

昨日の SO 投稿を見つけましたが、このほぼ正確なコード (アラートなし) が正常に動作すると主張していました (申し訳ありませんが、その SO 投稿を再検索できません)。

入力テキスト ボックスでキーアップ イベントのキー コードを取得するには、(jquery ではなく) ストレートな JavaScript を使用する必要があります。今のところ、上記のコードで handleRtnKey() 関数を起動することはできません。なぜですか?

編集

Damon がキーワード「event」を紹介してくれたので、上記のコードが正常に動作するようになりました。html コードの引数の名前を「e」から「event」に変更しただけで、javascript ハンドラが正常に動作するようになりました。上記のコードを作成する必要がありました:

 // OLD
 <input type="text" id="zer" onkeyup="handleRtnKey(e)"/>

 // NEW
 <input type="text" id="zer" onkeyup="handleRtnKey(event)"/>

注: javascript 関数 handleRtnKey(e) は変更されていません。その関数の署名を変更する理由はありませんでした。以下のようになり、現在は正常に動作しています。

function handleRtnKey(e)
{
    alert("Just entered handleRtnKey()");

    if (!e) 
    {
        e = window.event;   // resolve event instance for IE    
    }

    alert("Just entered handleRtnKey(), e.keyCode is: " + e.keyCode);
    alert("Just entered handleRtnKey(), e is: " + e);

    if (e.keyCode == '13')
    {
      alert("handleRtnKey: got the RTN key up event.");
      return false;
    }
}

 THANKS DAMON.      
4

3 に答える 3

1

引数はまったく必要ありません。次を使用してeventください。

function handleRtnKey() {
    event = event || window.event; // for cross-browsing
    alert(event); // or do whatever you want with it
};

DEMO

于 2013-09-07T18:58:49.073 に答える
0

私の問題の解決策は、Damon が上記のコメントで指摘したとおりでした。定義済みの「event」キーワードがあることを知らなかったので、上記のコードで「e」の代わりに「event」を使用すると、問題なく動作しました。

于 2013-09-08T19:58:17.497 に答える
0

問題は、持っていないパラメーターを使用してメソッドを呼び出すことです。e は宣言されていません。削除すると動作します。このコードは私のために働いた:

<input type="text" id="zer"/>

<script>
window.onload = function () {
    document.getElementById("zer").onkeyup = function(event) {
        if (event.keyCode == 13) {
            alert("Just entered handleRtnKey()");
        }
    };
};
</script>
于 2013-09-07T18:16:28.890 に答える