
当用户点击屏幕上的虚拟按键后,再按物理键盘的空格或回车键,该按键字符会被意外重复插入——这是由于 元素在获得焦点时,空格/回车会自动触发其 click 事件所致。本文提供两种可靠解决方案:状态标记法与语义替代法。
当用户点击屏幕上的虚拟按键后,再按物理键盘的空格或回车键,该按键字符会被意外重复插入——这是由于 `
这是一个典型的 HTML 表单控件行为陷阱:(相当于用户再次“点击”了该按钮)。而你的逻辑中,
通过一个布尔变量记录上一次 keypress 是否为 (空格)或Enter,并在按钮的onclick 中主动判断跳过执行:
window.addEventListener(‘keydown’, function(e)
// 其他按键(如字母、数字)正常处理 keyClick(e.key);
});
function keyClick(key)
? 关键点说明:
- 使用 keydown 替代 keypress ——后者对 Enter/Space 支持不稳定,且已被现代标准弃用;
- e.preventDefault() 防止
- 状态标志 shouldSkipNextClick 在 keydown 中设为 true,并在按钮 onclick 中消费并重置,实现精准拦截。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/261429.html