2016-05-16 5 views
1

私はクリックイベントで有効化された関数を使用しました。私はkeypressイベントを使って同じことをしたい。キー押下を追加する既存の機能を使用するイベント

function addToText(target) { 

    var exp = target.target; 
    //alert(exp.value); 
    if (newExp) { 

    //clearText(); 
    document.getElementById("expression").value = exp.value; 
    newExp=false; 

    } 

    else 
    document.getElementById("expression").value = document.getElementById("expression").value + exp.value; 

} 

これは使用される関数です。 keypressイベントにも使用するように変更する方法現在のところ、キー入力イベントの場合、最初は機能しません。しかし、一度クリックすると、以前にクリックされたのと同じ番号が返されます。ここ

完全なコードは:http://codepen.io/jpninanjohn/pen/JXVpYb?editors=1010

答えて

2

ここにありますが、あなたの最終的な解決策ですが、私はので、CHARCODEはそれが何を意味するのか、48と57の間にある場合、数字は0から9

document.addEventListener('keypress', function(e){ 
     if (e.which >= 48 && e.which <= 57) 
     document.getElementById("expression").value+= String.fromCharCode(e.which); 
    }); 
+0

よろしくお願いします。これは、計算機の内部をどこかでクリックした後でしか動作しません。 – leoOrion

+0

本当ですか?あなたの編集したコードペンをテストしました。電卓の外をクリックして入力しても機能します。 –

+0

はい私はもう一度チェックして、それは外側のクリックに対しても機能します。しかし、なぜ最初のクリック? – leoOrion

0

あなたが使用することができ、これは

window.onkeyup = function(e) { 
    var key = e.keyCode ? e.keyCode : e.which; 
document.getElementById("expression").value += key-48; //for getting the number 

    alert(key); 
    if (key == 38) { 
     //whatever 
    }else if (key == 40) { 
     // whatever 
    } 
} 

source

機能 - そして、あなたは=の代わり

document.getElementById("expression").value+= 

に+を追加する必要があります -

document.getElementById("expression").value= 
+0

VARキーを持っているので、KeyPressイベントは、あなたがexp.valueを削除する必要が

function addToTextKeypress(event) { var exp = String.fromCharCode(event.keyCode); //alert(exp); if (newExp) { //clearText(); document.getElementById("expression").value = exp; newExp=false; } else document.getElementById("expression").value = document.getElementById("expression").value + exp; } 

その後target.targetない、異なっ押されたキーの値を取得します= e.keyCode? e.keyCode:e.which;このラインは何をするのですか? – leoOrion

+0

「インラインなら」 –

0

間あなたはKeyPressイベントのためのさまざまな機能を追加する必要がありますテストそれが直接の値

関連する問題