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

Adding keypress Events that use an existing function

本文关键字:事件 功能 添加      更新时间:2023-09-26

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

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

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

此处为完整代码:http://codepen.io/jpninanjohn/pen/JXVpYb?editors=1010

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

您可以使用此函数-

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=

您必须为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,因为它具有直接值