2016-09-26 2 views
0

私は、テキストボックス内で押された各キーの文字コードを表示するプロジェクトに取り組んでいます。JavaScriptの特定のキーのkeypressイベントを変更する

私の問題、すなわち時に特定のキー、ということである:私が押されたときにこれらのキーが彼らの正常な動作を維持したい16、8、32

:Shiftキー、バックスペース、スペースが押下されているように、その文字コードが表示されます。そのスペースはテキストボックス内にスペースを生じさせ、バックスペースは文字を削除します。そして、残りのキーは文字コードを出力し続けます。

これを行うにはどうしたらよいですか?

答えて

1

キーを確認してそれに応じて処理できます。ここではデモです:

document.getElementById("test-textbox").addEventListener("keypress", function(event) { 
 
    var code = event.keyCode || event.which; 
 
    
 
    if(code === 16 || code === 8 || code === 32) //check if space, shift, or backspace 
 
     return; //if yes, allow 
 
    
 
    console.log(code); //if not, log value 
 
    event.preventDefault(); //prevent entry 
 
});
<input type="text" id="test-textbox">

これは、シフト、バックスペース、およびスペースキーを押すことができるようになりますが、他のすべてが記録されます。

+0

ありがとうございます。これは機能します。 – mattHunting10

+0

@ mattHunting10問題ありません。喜んで助けてください。それが助けてくれれば、アップアップを考えて、おそらく受け入れてください:) – Li357

+0

私には唯一の他の質問です。どのようにしてSHIFTキー出力を文字の大文字にすることができますか?たとえば、誰かが "shit + h"を押して72の代わりに73を出力するとします。 – mattHunting10

0

限り、あなた...

  1. は、イベントオブジェクトのpreventDefaultメソッドを呼び出すことはありません、と
  2. イベントハンドラ

からfalseを返しません...あなたがあるべきな良い。特に

、ハンドラ...

function showCharCode(event) { 
    // NOTE: Don’t call `event.preventDefault()` here. 
    document.querySelector('.char-code').textContent = event.charCode; 
    // NOTE: Don't return false here. 
} 

...まだデフォルトのテキストボックス(または入力、またはのcontentEditable)要素にイベントを伝播します。

+0

しかし、私はpreventDefaultメソッドを呼び出さないでください。それから、私はキーのキーコードとそれに関連付けられた文字の両方を取得します。 65aのように。代わりに65. – mattHunting10

+0

@ mattHunting10したがって、スペース、バックスペース、シフトキーを除く*実際の入力ではなく、文字のキーコードをテキストボックス*に表示しますか? –

+0

はい、ありがとうございます。しかし、上記の人はすでに解決策を得ています。 – mattHunting10

0

これはあなたのために働くと思います。

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

elementID.onkeydown = function(event) { 
    var key = event.keyCode || event.charCode; 

    if(key == 32 || key == 8) 
     event.preventDefault(); 
}; 
+0

私はいくつかを除くすべてのキーの文字コードを出力しようとしています。ですから、私は65文字ではなく65文字の文字コードを出力しないようにするために、既にpreventDefault()を含める必要があります。そういうわけで、あなたの例はうまくいきません。 – mattHunting10

関連する問題