Heim >Web-Frontend >js-Tutorial >Wie beschränke ich die HTML-Texteingabe so, dass nur numerische Werte akzeptiert werden?

Wie beschränke ich die HTML-Texteingabe so, dass nur numerische Werte akzeptiert werden?

DDD
DDDOriginal
2024-12-15 13:52:26370Durchsuche

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

Nur ​​numerische Eingabe bei der HTML-Texteingabe zulassen

Einführung

HTML-Texteingaben ermöglichen Benutzern um Text einzugeben, aber was ist, wenn Sie die Eingabe nur auf Zahlen beschränken möchten? Dies kann nützlich sein, um Daten wie Kontonummern oder PINs zu sammeln.

JavaScript-Lösung

Eine Möglichkeit, dies zu erreichen, ist JavaScript. Hier ist eine JavaScript-Funktion, die nicht numerische Zeichen herausfiltert:

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 = "";
      }
    });
  });
}

Verwenden der Lösung

Um diese Funktion zu verwenden, können Sie eine Funktion an setInputFilter übergeben Prüft, ob die Eingabe numerisch ist:

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

Dadurch wird das Texteingabefeld „numericInput“ auf das Akzeptieren beschränkt numerische Zeichen (und der Dezimalpunkt).

Hinweis

Denken Sie daran, die CSS-Klasse „input-error“ anzuwenden, um das Eingabefeld zu formatieren, wenn ein ungültiger Wert eingegeben wird.

Das obige ist der detaillierte Inhalt vonWie beschränke ich die HTML-Texteingabe so, dass nur numerische Werte akzeptiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn