1115 Stimmen

HTML-Texteingabe erlaubt nur numerische Eingaben

Gibt es eine schnelle Möglichkeit, eine HTML-Texteingabe ( <input type=text /> ), um nur numerische Tastenanschläge (plus '.') zuzulassen?

1voto

kombi Punkte 1
function digitsOnly(obj) {
   obj.value = obj.value.replace(/\D/g, "");
}

und in dem Element

<input type="text" onkeyup="digitsOnly(this);" />

1voto

8176135 Punkte 2893

Hier ist eine sehr kurze Lösung, die nicht die veraltete keyCode o which blockiert keine Nicht-Eingabetasten und verwendet reines Javascript. (Getestet in Chromium 70.0.3533, Firefox 62.0, und Edge 42.17134.1.0)

HTML:

<input type="text" onkeypress="validate(event)">

JS:

function validate(ev) {
    if (!ev) {
        ev = window.event;
    }

    if (!ev.ctrlKey && ev.key.length === 1 && (isNaN(+ev.key) || ev.key === " ")) {
        return ev.preventDefault();
    }
}

1voto

Gagan Gami Punkte 9896

Ja, HTML5 tut es. Versuchen Sie diesen Code ( w3schule ) :

<!DOCTYPE html>
<html>
<body>

<form action="">
  Quantity (between 1 and 5): <input type="number" name="quantity" min="1" max="5" />
  <input type="submit" />
</form>

</body>
</html>

1voto

SoEzPz Punkte 13250

Für diejenigen unter Ihnen, die gerne Einzeiler .

string.replace(/[^\d\.]/g, '').replace(/^\.*/, '').replace(/(\.\d{0,2})(.*)/, '$1');

Ich benutze diesen Code auf einer Eingabe type="text", und mit AngularJS auf Tastendruck zu aktivieren, aber Sie können jQuery verwenden, wenn wie. Setzen Sie einfach diesen Code in eine Funktion, die auf einen Tastendruck irgendwie aktiviert.

Es sind nur Ziffern, Ziffern + Dezimalstellen, Ziffern + Dezimalstellen + Ziffern zulässig.

CODE

YourString.replace(/[^\d\.]/g, '').replace(/^\.*/, '').replace(/(\.\d{0,2})(.*)/, '$1');

testOne = "kjlsgjkl983724658.346.326.326..36.346"
=> "983724658.34";

testTwo = ".....346...3246..364.3.64.2346......"
=> "346.";

testThree = "slfdkjghsf)_(*(&^&*%^&%$%$%^KJHKJHKJKJH3"
=> "3";

testFour = "622632463.23464236326324363"
=> "622632463.23";

Dies wurde für die US-Währung entwickelt, kann aber so geändert werden, dass mehr als zwei Dezimalstellen nach dem ersten Komma zulässig sind, wie im Folgenden dargestellt...

GEÄNDERTER CODE

YourString.replace(/[^\d\.]/g, '').replace(/^\.*/, '').replace(/(\.\d*)(.*)/, '$1');

testFour = "dfskj345346346.36424362jglkjsg....."
=> "345346346.36424362";

:)

1voto

Edson Cezar Punkte 21904

Ich habe nach einer Möglichkeit gesucht, eine Zahleneingabe zu blockieren, und da ich sie in den Antworten nicht gefunden habe, hat dieser Code für mich gut funktioniert.

Ich muss sie nur in das onkeypress-Ereignis eingeben.

Wenn Sie nur eine Zahleneingabe blockieren müssen, wird dies meiner Meinung nach gut funktionieren.

onkeypress="if(event.which &lt; 48 || event.which &gt; 57 ) if(event.which != 8) if(e.keyCode != 9) return false;"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X