javascript - 如何防止 Enter 和 Space 键重复我在 Javascript 中的最后一次点击?
问题描述
我使用 Javascript 用 HTML 制作了一个计算器
单击按钮时效果很好(我使用了事件侦听器)。
但是我想让你在键盘上输入数字和操作,但遇到了一些麻烦:当我点击它时Space
,它有点模仿我的最后一次点击,Enter
它只是复制了相同的效果,但没有实际点击按钮。
我做了一个小例子,只有数字按钮和计算器操作数供你测试,这里是 HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calculator</title>
</head>
<body>
<div class="calculadora-grid">
<div class="display">
<div class="current-operand" data-current-operand></div>
</div>
<button data-number>1</button>
<button data-number>2</button>
<button data-number>3</button>
<button data-number>4</button>
<button data-number>5</button>
<button data-number>6</button>
<button data-number>7</button>
<button data-number>8</button>
<button data-number>9</button>
<button data-number>0</button>
<button data-number>.</button>
</body>
<script src="script.js"></script>
</html>
和JS:
const numberButtons = document.querySelectorAll('[data-number]')
const currentOperandText = document.querySelector('[data-current-operand]')
numberButtons.forEach(button => {
button.addEventListener('click', () => {
currentOperandText.innerText = currentOperandText.innerText + button.innerText
})
})
// the Space and Enter keys only replicate clicks, not other pressed keys.
const arrNumbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.']
window.addEventListener('keydown', (pressedKey) => {
if(arrNumbers.includes(pressedKey.key)) {
currentOperandText.innerText = currentOperandText.innerText + pressedKey.key
}
})
如何防止Space
和Enter
复制点击?
解决方案
推荐阅读
- html - div 如何在网格布局中保持其最小高度?
- sftp - pscp 可以传输到临时文件并在完成后重命名吗?
- javascript - 如何从反应的下拉列表中获取价值?
- mysql - 带有secure_file_priv问题的MySQL数据导入
- javascript - 在 React JS 中显示 Firebase 数组对象的问题
- php - 使用 OpenSSL 的 EC 公钥加密
- reactjs - AgGrid 未填充所有列
- java - 使用 Quarkus 反应式 MySQL 客户端 / io.vertx.mysqlclient 的服务器故障转移
- android - kotlin协程超过一定时间怎么取消?
- python - 同时在屏幕上叠加绘图和更多绘图