0

プロトタイプ関数内でキーストロークをキャプチャしようとしています。

これが私のコードです:

function txtBox(input) // pass textbox
{
     this.id = "myTextbox";
     this.txt = input
}
txtBox.prototype.init = function()
{
     this.txt.bind("keyup",this.keyup);
}
txtBox.prototype.keyup= function(event)
{
     alert("keycode: event.keyCode);
     alert(this.id);
}
var myTxt = new txtBox($(#txt)); // create object
myTxt.init();

キャプチャは機能しますが、問題は、keyupトリガーがオブジェクトの「外側」にあることです。つまり、定義さthis.idていても「未定義」が返されます。

これと一貫性を保つ方法を知っている人はいますか?

4

2 に答える 2

0

スクリプトに「txt」という名前の実際のタグがあると仮定すると、次の2つの問題が発生します。

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

この行はから変更する必要があります

alert("keycode: event.keyCode);

alert("keycode": event.keyCode);

また、これはから変更する必要があります

new txtBox($(#txt)); 

new txtBox($('#txt')); 

そして、それはあなたのテキストボックス名を警告します.IEでは、IDを変更しようとしている方法でIDを変更できるとは思いませんthis.id="textbox"

于 2009-11-05T17:34:48.103 に答える
0

あなたのコードを私のfirebugにコピーして貼り付け、このページで実行してみました(ただし、アラートをconsole.logに変更しました)。そして、それはうまくいくようです。選択したテキストフィールドのすべてのキーダウンをキャプチャしますが、他の場所ではキャプチャしません。

于 2009-11-05T17:01:01.057 に答える