javascript - 如何在禁用键码后允许选项卡

标签 javascript html

我有一个输入字段,我只想在其中插入数字。

为了实现此目的,我在输入中添加了以下属性:

 onkeypress="return event.charCode == 8 || event.charCode == 9 || event.charCode == 37 || event.charCode == 39 || event.charCode == 46 || event.charCode >= 48 && event.charCode <= 57" 

注意:

                /*
                    keycodes allowed :
                    37 : left
                    39: right
                    46: decimal
                    48-57: digits + -
                    8: backSpace
                    9: tab
                */

我遇到的问题(仅在 Firefox 中)是 TAB 无法从一个字段切换到另一个字段。

知道如何实现它吗?

最佳答案

以下是我的建议:

  • 检测不可打印字符时,应使用 keydown
  • 您必须使用 event.whichevent.keyCodecharCode 已弃用。请参阅https://developer.mozilla.org/en-US/docs/Web/API/event.charCode
  • 使用 preventDefault 防止字符可靠打印。
  • 不要将 JavaScript 嵌入 HTML 属性中,这样很难重用和读取。

这是你可以使用的东西

document.getElementById('something').addEventListener('keydown', function(e) {
    var keyCode = e.keyCode|| e.which;
    var nonPrintableAllowed = [8,9,37,39,46];
    var isDigit = keyCode >= 48 && keyCode <= 57;                           
    var isAllowed = nonPrintableAllowed.indexOf(keyCode) > -1 || isDigit;
    console.log(isAllowed);
    if (!isAllowed) {
        e.preventDefault();
    }
});
<input id="something" /><input /> <input />

关于javascript - 如何在禁用键码后允许选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27637597/

相关文章:

javascript - 具有多个条件的多个 <td>

JavaScript 正则表达式解释

javascript - 将 xsl 嵌入到 XML 文件中

javascript - jQuery TwoWay 数据绑定(bind)

html - 添加样式如果元素有特定的兄弟

javascript - 无论焦点如何,每次 HTML 文本输入字段中的数据更改时,我都想触发一个事件

jquery - IE - 消失的导航

javascript - async/await 代码是否应该完全包含在 try block 中?

Javascript:将多个参数传递给 EventListener 和事件

html - 如何将 sigmajs gephi 导出文件上传到服务器? [我需要指向的带有 css 和 index.html 的 javascript 文件]