Javascript 添加使用现有功能的按键事件

Javascript 添加使用现有功能的按键事件,javascript,dom-events,keyboard-events,Javascript,Dom Events,Keyboard Events,我使用了一个在点击事件时激活的功能。我想用按键事件做同样的事情 function addToText(target) { var exp = target.target; //alert(exp.value); if (newExp) { //clearText(); document.getElementById("expression").value = exp.value; newExp=false; } else docume

我使用了一个在点击事件时激活的功能。我想用按键事件做同样的事情

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;

}
这是所使用的函数。如何修改它以同时用于按键事件。目前,它最初不起作用(对于按键事件)。但单击一次后,任何按键都会返回先前单击的数字


此处的完整代码:

您可以使用此功能-

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
   }
}

您需要向=

document.getElementById("expression").value+= 
而不是-

document.getElementById("expression").value=

这是您的最终解决方案,我测试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);
    });
document.addEventListener('keypress',函数(e){

如果(e.which>=48&&e.which您必须为按键事件添加不同的函数,因为按键事件获取按键值的方式不同,而不是target.target

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;

}

稍后您需要删除exp.value,因为它有直接值

var key=e.keyCode?e.keyCode:e.which;这行做什么?好的。这只在我在计算器内部某处单击后才起作用。您确定吗?我已经测试了您编辑的代码笔,即使我在计算器外部单击并开始键入,它也能起作用。是的,我再次检查了它也适用于外部点击。但为什么最初的点击???