javascript - 如何使 contenteditable div 只接受数值?CTRL、Spacbar 和退格等所有功能键也应该可以使用
问题描述
我使用此代码,但它也允许字符。我只希望 div 接受数值,而功能键也应该适用于它。
this.shadowRoot.querySelector('div').addEventListener('keydown', async (e) => {
if (e.keyCode >= 65 && e.keyCode <= 90) {
e.preventDefault();
return false;
}
});
解决方案
使用数组定义允许的键,如果您打算使用 keycode,则数组值应该是 ascii 值。可以使用 Key 属性代替 keycode。键属性是一个只读属性,它返回键的值。你可以参考这篇文章。
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
allowedKeys = ['Backspace','Tab','Escape','Enter','1','2','3','4','5','6','7','8','9','0','ArrowLeft','ArrowRight','ArrowUp','ArrowDown','Delete']
this.shadowRoot.querySelector('div').addEventListener('keydown', async (e) => {
if (!allowedKeys.includes(e.key)) {
e.preventDefault();
return false;
}
});
推荐阅读
- java - 如何使用 Spring Data REST 创建自定义 PersistentEntityResourceAssembler
- python - 在 Pandas 中将唯一值从组存储到另一列
- algorithm - 如何计算给定算法(岭回归)的时间复杂度?
- php - LDAP递归地从组中获取用户
- python - 仅当 Python 中的所有 try 语句都成功时才运行语句
- sql - 如何在不创建函数或使用 STRING_SPLIT 函数的情况下拆分分隔字符串
- typescript - 从 JSON 响应初始化地图
- html - 我的想法哪里错了?浏览器缩放简单盒子
- python-3.x - 如何增加 pandastable 的宽度
- java - 如何部署服务器-客户端程序-java