Gibt es eine schnelle Möglichkeit, eine HTML-Texteingabe ( <input type=text />
), um nur numerische Tastenanschläge (plus '.') zuzulassen?
Antworten
Zu viele Anzeigen?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();
}
}
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>
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";
:)
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 < 48 || event.which > 57 ) if(event.which != 8) if(e.keyCode != 9) return false;"