0

次のコードを使用して、IEのonKeyPressイベントに新しいキーコードを割り当てています。

window.event.keyCode=65

IEでは、これによりチェーン内の他のイベントハンドラーが受け取るキーが変更されますが、このコードはchromeでは機能しません。これを行う方法はありますか?

HTMLの例:

<input type="text" name="hotelfloornew" id="hotelfloornew" 
       onkeypress="uPPer();" size="25" />

対応するJS:

function uPPer()
{
    switch (window.event.keyCode)
    {       
        case 97:window.event.keyCode=65;break;
        case 98:window.event.keyCode=66;break;  
        case 99:window.event.keyCode=67;break;  
        case 100:window.event.keyCode=68;break;
.
.
.

    }
}
4

3 に答える 3

3

IE はグローバル イベント値を割り当てますが、それは正規化されていません。他のブラウザーでは、 callback に提供された値を使用します。

window.onkeypress = function(event) {
   console.log(event.keyCode);
}
于 2012-10-01T14:09:12.213 に答える
1

イベントのプロパティを変更するkeyCodeことは、古い IE でのみ機能する厄介なハックです。これは読み取り専用である必要があり、すべての適切なブラウザーに含まれています。やらないでください。

キーを押したときの効果を変更する必要がある場合は、デフォルトのアクションを無効にして、独自の置換アクションを手動で実行してください。入力した文字を他の文字にマップしたい場合は、私が以前 Stack Overflow で公開したコードを使用できます

于 2012-10-01T15:01:59.087 に答える
0
function doKey(e) {
        evt = e || window.event; // compliant with ie6        
        alert(evt.keyCode+' Pressed');
    }

window.event.keyCode は主に IE 用です... すべてのナビゲーターで押された keyCode を警告するコードの例を次に示します。

于 2012-10-01T14:11:39.873 に答える