当前位置: 首页 > 面试题库 >

JavaScript HTML文本输入仅允许数字输入

皇甫飞跃
2023-03-14
问题内容

有没有一种快速的方法来将HTML文本输入(<input type=text />)设置为仅允许数字键击(加’。’)?


问题答案:

注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码

JavaScript

您可以<input>使用以下setInputFilter功能过滤文本的输入值(支持Copy + Paste,Drag +
Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE
9以后的所有浏览器) :

// Restricts input for the given textbox to the given inputFilter function.
function setInputFilter(textbox, inputFilter) {
  ["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
    textbox.addEventListener(event, 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 = "";
      }
    });
  });
}

现在,您可以使用该setInputFilter功能来安装输入过滤器:

setInputFilter(document.getElementById("myTextBox"), function(value) {
  return /^\d*\.?\d*$/.test(value); // Allow digits and '.' only, using a RegExp
});

另请注意,您仍然必须执行服务器端验证!

jQuery

还有一个jQuery版本。

HTML 5

HTML 5提供了一个本机解决方案<input type="number">(请参见规范),但是请注意,浏览器支持有所不同:

  • 大多数浏览器仅在提交表单时验证输入,而在键入时不验证输入。
  • 大多数移动浏览器不支持stepminmax属性。
  • Chrome(版本71.0.3578.98)仍然允许用户输入字符eE输入字段。
  • Firefox(版本64.0)和Edge(EdgeHTML版本17.17134)仍然允许用户在字段中输入任何文本。


 类似资料:
  • 问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持CopyPaste,Drag+Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE9以后的所有浏览器 : 现在,您可以使用

  • 问题内容: 如何将输入限制为文本框,使其仅接受数字和小数点? 问题答案: 这确实有效!

  • 问题内容: 如何限制或限制用户在文本框中最多输入五个字符? 以下是我表单中的输入字段: 使用的是maxSize之类的东西吗? 问题答案: 最大长度: 输入将接受的最大字符数。这可以大于SIZE指定的大小,在这种情况下,该字段将适当滚动。默认值为无限制。 但是,这可能会或可能不会受到您的处理程序的影响。您可能还需要使用或添加另一个处理函数来测试长度。

  • 我有一个输入字段,用户只能在其中输入数字。 JSFIDLE演示 问题是:当我输入一个数字(例如,)然后按点()时,或-浏览器会自动删除输入字段的内容(值设置为“”=空字符串)。但是为什么呢?将类型从更改为似乎可以解决问题。但是,我失去了输入字段的向上/向下箭头功能。有什么想法吗?

  • 如何验证只有2位数字的输入数字,并允许用户使用JQuery输入点数字? 用户可以输入0到99个数字和点数字 比如( 0.1(3位) 3.14(4位数字) 98.1212178623445243(更多数字) 等......) https://jsfiddle.net/kwcft9bq/ 我试着用 但最后还是不行 有什么想法吗???非常感谢。

  • 问题内容: 我正在使用ui- select中的选择框。一切正常,但我想允许手动输入文本,并且不想从列表中的可用值中限制用户。如果我输入文字,它将正确过滤我的列表。但是,当我不单击某个元素并移至下一个字段时,我的文本将被丢弃。 有任何想法吗? 谢谢和问候,亚历克斯 我不想显示我的代码,因为我认为它是不正确的,但是有人要求: 数据存储在中。是要显示的当前字段的编号(我正在动态生成表单)。只需假设它存储