昨日実際に投稿された 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.