javascript - html 键码在 firefox 中不起作用

标签 javascript html

我有以下代码:

function noNumbers(e)
{
    var charCode = (e.which) ? e.which : 
                 ((e.charCode) ? e.charCode : 
                   ((e.keyCode) ? e.keyCode : 0));
    if((charCode < 48 || charCode > 57) && (charCode > 45 || charCode < 47))
        e.preventDefault();
}

目标是让用户可以键入数字、退格键和删除键。它适用于 Chrome 和 IE,但在 Firefox 中,您可以只键入数字,而不是退格键或删除键。

JSfiddle:https://jsfiddle.net/sdy9gd0g/

最佳答案

为什么不处理 input事件代替?此方法将通过键盘输入、剪切、粘贴等方式处理实时更改。

(function() {
  var textBox = document.getElementById("text-box");
  textBox.addEventListener("input", function(e) {
    var val = this.value,
      rx = /[^\d]/g;
    if (rx.test(val)) {
      var pos = this.selectionStart;
      this.value = val.replace(rx, "");
      this.selectionStart = pos;
      this.selectionEnd = pos - 1;
    }
  });
})();
<input id="text-box" autofocus>

关于javascript - html 键码在 firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168918/

相关文章:

javascript - 第一次使用 jquery/javascript 防止警报

javascript - 显示 div 片刻,然后在 jquery 中切换到另一个 div

javascript - 将 ERB HTML 从 Rails 渲染为 Angular,Angular 尝试将其解释为 JSON

html - 有限的博客文章出现在主页和标签搜索中

javascript - 如何等待浏览器将数据保存到本地存储? [ReactJs]

javascript - 如何使用 JavaScript 为对象制作动画?

javascript - 如何创建一个充满链接或 `<a>` 标签的下拉菜单?

javascript - 如何使用 JavaScript 自动更改 HTML 图像

javascript - 检查 jQuery 是否被内容过滤器阻止

JavaScript 删除一个 div (removeChild)