如何使用 jQuery 在 HTML 输入框中只允许数字0-9?

问题描述

这是一个更新的答案。下面的评论指的是一个乱码的旧版本。

jQuery

没有本机 jQuery 实现,但是您可以<input>使用以下inputFilter插件过滤文本的输入值(支持复制+粘贴、拖放、键盘快捷键、上下文菜单操作、不可键入的键、插入符号位置、不同键盘布局,以及自 IE 9 以来的所有浏览器):

// Restricts input for the set of matched elements to the given inputFilter function.
(function($) {
  $.fn.inputFilter = function(inputFilter) {
    return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
      if (inputFilter(this.value)) {
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
      } else if (this.hasOwnProperty("oldValue")) {
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
      } else {
        this.value = "";
      }
    });
  };
}(jQuery));

您现在可以使用该inputFilter插件安装输入过滤器:

$(document).ready(function() {
  $("#myTextBox").inputFilter(function(value) {
    return /^\d*$/.test(value);    // Allow digits only, using a RegExp
  });
});

有关更多输入过滤器示例,请参阅JSFiddle 演示。另请注意,您仍然

纯 JavaScript(没有 jQuery)

这实际上不需要 jQuery,你也可以用纯 JavaScript 做同样的事情。看到这个答案

HTML 5

HTML 5 有一个原生解决方<input type="number">(参见规范),但请注意浏览器支持各不相同:

  • 大多数浏览器只会在提交表单时验证输入,而不是在输入时。
  • 大多数移动浏览器不支持step,minmax属性
  • Chrome(版本 71.0.3578.98)仍然允许用户输入字符eE进入字段。另请参阅此问题
  • Firefox(64.0 版)和 Edge(EdgeHTML 17.17134 版)仍然允许用户在字段中输入 任何 文本。

w3schools.com 上亲自尝试。

解决方法

我正在创建一个网页,其中有一个输入文本字段,我想在其中只允许数字字符,例如 (0,1,2,3,4,5…9) 0-9。

如何使用 jQuery 做到这一点?