2011-12-21 5 views
3

Firefox(8)では、 'end'キーと '#'キーのcharCode(35)が同じです。それらを区別する方法はありますか?Firefoxのkeypressイベントからのハッシュ(#)vs終了charCode

私はjsfiddleで簡単にデモを行いました。入力ボックスに入力するだけで、押されたcharCode /キーが表示されます。

http://jsfiddle.net/PfAeW/

私は「#」のオートコンプリート機能をトリガーするリッチテキストエディタを構築しています。私は国際的なユーザー(英国のキーボード)に対応する必要があるので、「シフト」が押されているかどうかを調べることは機能しません。

+1

fyi、ピリオド( '.')は' delete'にも変換されます**問題点** ** apostrophe( ''')= (右)、左括弧( '(')= 'down')(何かはmootoolsが正しくキーをキャッチしていないと誤って報告しますが[それは投機的ですが) –

+0

あなたはそうです、それはMootoolsですありがとうございます。 –

+0

[キーボードマネージャ](http://mootools.net/docs/more/Interface/Keyboard)を使用して " Shift + 3 "? –

答えて

0

答えがありますちょうどそう...

それはMooToolsはをキー入力(テストでも同様に、次の誤マッピングを示して-MIS代表されるようになっています

Key Pressed  How Moo Sees It 
-----------  --------------- 
end    #   35 
. (period)  delete  46 
( (left paren.) down  40 
' (apos.)  right  39 

をしかし、あなたはKeyboardKeys listと組み合わせて)を使用して、正しいシーケンスにバインドすることができます。私はmoo-toolsには慣れていませんが、ドキュメントの例では、

var kb = new Keyboard({ 
    defaultEventType: 'keypress' 
}); 
kb.addEvents({ 
    'end': fnEnd, 
}); 

免責事項:解決策よりも多かれ少なかれ表示される(または、ドキュメントに基づいた私の理解です)。私は上記のコードが動作するかどうかは知りませんが、それが必要です。しかし、私は上記を特定のコントロールにバインドする方法がわからないので、キーボードが直接バインディングを超えているという1つの制限があります。

+0

私の解決策は、Mootoolsのショートカットを使用する代わりにString.fromCharCode(event.charCode || event.which)を使用してキーを取得することでした。 –

+0

@ gpbmike:その後、気軽にあなた自身の質問に答え、回答として投稿してください。私は他の人がそれから恩恵を受けることを確信しています。十分な時間が経過すると、それも受け入れることができます。 –

1

DOMの重要なイベントのためのコードの2種類がありますcharCode、キーボードで押された物理的なキーを表し、印刷可能なキーの文字とkeyCodeを表します。

「#」のcharCodeは35で、終了キーのkeyCodeも35ですが、数字と意味のマッピングはまったく異なります。

Mootoolsは、2つのコードを融合させたイベントで.codeを公開するため、混乱します。あなたがshiftをチェックすることができます

0

event.code == 16)のKeyDownイベントのキーとそれらの値を保持したときにキーが押さあなたが​​イベントからcodeは16だったと今は本当に押されて35 #であれば確信しているトリガされます。シフトが押されていることを確認するもう1つの方法があります。

関連する問題