首页 >web前端 >js教程 >如何限制 HTML 文本输入仅接受数字值?

如何限制 HTML 文本输入仅接受数字值?

DDD
DDD原创
2024-12-15 13:52:26370浏览

How to Restrict HTML Text Input to Only Accept Numeric Values?

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

简介

HTML 文本输入允许用户键入文本,但如果您只想将输入限制为数字怎么办?这对于收集帐号或 PIN 等数据很有用。

JavaScript 解决方案

实现此目的的一种方法是通过 JavaScript。这是一个过滤掉非数字字符的 JavaScript 函数:

function setInputFilter(textbox, inputFilter, errMsg) {
  [
    "input",
    "keydown",
    "keyup",
    "mousedown",
    "mouseup",
    "select",
    "contextmenu",
    "drop",
    "focusout",
  ].forEach(function (event) {
    textbox.addEventListener(event, function (e) {
      if (inputFilter(this.value)) {
        // Accepted value
        if ([
          "keydown",
          "mousedown",
          "focusout",
        ].indexOf(e.type) >= 0) {
          this.classList.remove("input-error");
          this.setCustomValidity("");
        }
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
      } else if (this.hasOwnProperty("oldValue")) {
        // Rejected value: restore the previous one
        this.classList.add("input-error");
        this.setCustomValidity(errMsg);
        this.reportValidity();
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
      } else {
        // Rejected value: nothing to restore
        this.value = "";
      }
    });
  });
}

使用解决方案

要使用此函数,您可以将一个函数传递给 setInputFilter检查输入是否为数字:

setInputFilter(document.getElementById("numericInput"), function (value) {
  return /^\d*\.?\d*$/.test(value); // Allow digits and '.' only
}, "Only numbers and '.' allowed");

这将限制 numericInput 文本输入字段仅接受数字字符(和小数点)。

注意

当输入无效值时,请记住应用输入错误 CSS 类来设置输入字段的样式。

以上是如何限制 HTML 文本输入仅接受数字值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn