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

Adding keypress Events that use an existing function

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

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;

}

这是使用的函数。我如何修改它以也用于按键事件。目前,它最初不起作用(对于按键事件)。但是点击一次后,任何按键 returns 与之前点击的数字相同。

完整代码在这里:http://codepen.io/jpninanjohn/pen/JXVpYb?editors=1010

你可以使用这个功能-

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=

这是你的最终解决方案,我测试 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);
    });

您必须为 keyPress 事件添加不同的函数,因为 keypress 事件获取按下的键的值不同,而不是 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,因为它具有直接值