【发布时间】:2020-07-29 21:09:02
【问题描述】:
是否可以触发附加在 React 中具有特定 keyCode 的按钮上的点击事件?现在我的计算器通过点击按钮来工作。但我的目标是让它同时工作 - 在数字键盘上单击或键入数字。
所有按钮都有点击事件,根据其名称触发功能。带有数字的按钮触发getNumber() 函数,该函数获取按钮名称并将其存储在状态中。然后 state 作为 props 发送到 display 组件并显示。运算符按钮触发operator() 函数,该函数从按钮名称中获取运算符并用于计算。
我试过用谷歌搜索,但我只能在输入<input>element 时触发“发送”按钮上的点击事件,我认为这是完全不同的事情。
那我决定这样试试
document.addEventListener('keyup',function(e){
if(e.which == 97){
document.getElementsByName('1')[0].click();
}
});
我的想法是为我将使用的每个键盘按钮添加带有特定 keyCode 的条件(0-9 和 +-*/. 并输入结果)。 我认为这不是正确的解决方案,但我试了一下,效果不佳。
当我第一次按 NUM1 时一切正常,计算器显示屏上出现“1”,但当我再次按它时,结果不是预期的“11”而是“111”。另一个命中结果不是“111”而是“1111111”等等。发生了一些奇怪的乘法运算。
当我把它放到codesandbox时发生了一件有趣的事情,所以我可以在这里与你分享。按下 NUM1 一次后,显示中会弹出 9 个。我不明白。
链接
https://codesandbox.io/s/youthful-platform-n6lvs?fontsize=14&hidenavigation=1&theme=dark
【问题讨论】:
标签: javascript html reactjs event-handling dom-events