2016-12-23 5 views
0

ユーザーがキーボードの文字「]」を選択したときに検出する必要があります。「dom」に]という文字を返します。keyCodeの検出に間違った値があります

私の問題は、次のとおりです。

イベントがinput要素またはdocumentから返された場合event.keyCodeによって返された値が異なっています。 event.keyCodeを::93 - に、String.fromCharCode:クロームバージョン55.0

私が入力を得る上で、次の問題をテストする。また

]

私はドキュメントの取得: イベントを。 keyCode:221 - に、String.fromCharCode:Ý

とFirefox 50.1.0

I上入力のために得る: event.keyCode:0 - に、String.fromCharCode:

私はドキュメントの取得: event.keyCode:221 - に、String.fromCharCode:私が知っておく必要があるだろうÝ

  • 私のコードで何が問題になっていますか?
  • 同じ値を持つ一貫した方法は何ですか?

注:私はENG United Stateの国際キーボードを使用しています(関連性がありますか?)。

var input = document.getElementById('input'); 
 
var result = document.getElementById('result'); 
 
input.addEventListener('keypress', function(event) { 
 
    result.innerHTML = `event.keyCode: ${event.keyCode} - String.fromCharCode: ${String.fromCharCode(event.keyCode)}`; 
 

 
}); 
 

 
var resultDocument = document.getElementById('resultDocument'); 
 

 
document.addEventListener('keydown', function(event){ 
 
    resultDocument.innerHTML = `event.keyCode: ${event.keyCode} - String.fromCharCode: ${String.fromCharCode(event.keyCode)}`; 
 
});
<input id="input" type="text" size="40"> 
 
<div id="result"></div> 
 

 
<h1>On document</h1> 
 
<div id="resultDocument"></div>

+0

これは、その文字を取得するために、Macでは 'fn' +' option' + '9'とコンピュータ上では' AltGr' + '9'(正しく覚えていれば)を押す必要があります。 'Fn'、' option'、 'AltGr'はjavascriptのkeypressesとして登録されていません。残念ながら、私はこの瞬間の価値を得るための明確な方法を提供することはできません。 – junkfoodjunkie

答えて

1

Event.keyCodeは非推奨となり、利用可能な場合inconsistentブラウザ間、代わりにEvent.keyを使用しています。そうでない場合は、Keypressなどのライブラリを使用することをお勧めします。 jQueryもやります。

0

これは正常に動作し、あなたがキーコードを取得するためのキープレスイベントを使用している

var input = document.getElementById('input'); 
 
var result = document.getElementById('result'); 
 
input.addEventListener('keypress', function(event) { 
 
    result.innerHTML = `event.which: ${event.which} - String.fromCharCode: ${String.fromCharCode(event.which)}`; 
 
}); 
 

 
var resultDocument = document.getElementById('resultDocument'); 
 

 
document.addEventListener('keypress', function(event){ 
 
    resultDocument.innerHTML = `event.which: ${event.which} - String.fromCharCode: ${String.fromCharCode(event.which)}`; 
 
});
<input id="input" type="text" size="40"> 
 
<div id="result"></div> 
 

 
<h1>On document</h1> 
 
<div id="resultDocument"></div>

0

(他のブラウザでテストしていませんが、少なくともそれがFirefoxで同じ答えを与える)ようですドキュメントからの入力とキーダウンから。 KeyupとKeydownは、常に大文字の文字のUnicode値を返します。したがって、大文字と小文字を区別したい場合は、Keyupを使用することをお勧めします。そうでなければ、keypressを使用できます。

http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml 詳細を確認してください。 Cheers

関連する問題