Ich muss sicherstellen, dass ein bestimmtes <input>
Feld nur Zahlen als Wert akzeptiert. Die Eingabe ist nicht Teil eines Formulars. Daher wird es nicht übermittelt, sodass eine Validierung während der Übermittlung keine Option ist. Ich möchte, dass der Benutzer keine anderen Zeichen als Zahlen eingeben kann.
Gibt es einen guten Weg, dies zu erreichen?
html
input
numbers
validating
Chiel ten Brinke
quelle
quelle
Antworten:
HTML 5
Sie können die HTML5-Eingabetypnummer verwenden , um nur Zahleneinträge einzuschränken:
Dies funktioniert nur im HTML5-Beschwerdebrowser. Stellen Sie sicher, dass der Doctype Ihres HTML-Dokuments lautet:
<!DOCTYPE html>
Siehe auch https://github.com/jonstipe/number-polyfill für transparente Unterstützung in älteren Browsern.
JavaScript
Update: Hierfür gibt es eine neue und sehr einfache Lösung:
Sehen Sie sich diese Antwort an oder versuchen Sie es selbst auf JSFiddle .
Für allgemeine Zwecke können Sie die JS-Validierung wie folgt durchführen lassen:
Wenn Sie Dezimalstellen zulassen möchten, ersetzen Sie die "if-Bedingung" durch Folgendes:
Quelle: HTML-Texteingabe erlaubt nur numerische Eingabe
JSFiddle-Demo: http://jsfiddle.net/viralpatel/nSjy7/
quelle
var charCode = (evt.which) ? evt.which : evt.keyCode;
Sie können auch das Musterattribut in HTML5 verwenden:
Tutorial zur Eingabevalidierung
Wenn Ihr Doctype dies nicht
html
ist, müssen Sie meiner Meinung nach Javascript / JQuery verwenden.quelle
Schneller und einfacher Code
Dies erlaubt nur die Verwendung von Zahlen und Rücktasten.
Wenn Sie auch einen Dezimalteil benötigen, verwenden Sie dieses Codefragment
quelle
Bitte versuchen Sie diesen Code zusammen mit dem Eingabefeld selbst
es wird gut funktionieren.
quelle
Sie können eine verwenden
<input type="number" />
. Dadurch können nur Zahlen in das Eingabefeld eingegeben werden.Beispiel: http://jsfiddle.net/SPqY3/
Bitte beachten Sie, dass das Eingabe-
type="number"
Tag nur in neueren Browsern unterstützt wird.Für Firefox können Sie die Eingabe mit Javascript überprüfen:
http://jsfiddle.net/VmtF5/
Update 2018-03-12: Die Browserunterstützung ist jetzt viel besser:
quelle
und in der js:
oder Sie können es auf komplizierte, aber nützliche Weise schreiben:
Hinweis : Cross-Browser und Regex im Literal.
quelle
0.43
oder.43
) berücksichtigen , die mit der Überprüfung des Werts der aktuellen Eingabe plus der gedrückten Taste durchgeführt werden können. Dies wäre in einzeiligem Code hässlich, ich empfehle, dafür eine Funktion zu verwenden. Überprüfen Sie hier , um Integer oder Float zu testen .Ich habe reguläre Ausdrücke verwendet, um den Eingabewert durch das benötigte Muster zu ersetzen.
quelle
onkeyup
wird ausgelöst, wenn die Taste losgelassen wird.isNaN(parseFloat(value))?
prüft, ob der Eingabewert keine Zahl ist.Wenn es sich nicht um eine Zahl handelt, wird der Wert auf 1000 gesetzt.
:
Wenn es sich um eine Zahl handelt, wird der Wert auf den Wert gesetzt.Hinweis: Aus irgendeinem Grund funktioniert es nur mit
type="number"
Um es noch spannender zu machen, können Sie auch eine Grenze haben:
Genießen!
quelle
Ich habe ein bisschen mit diesem gekämpft. Viele Lösungen hier und anderswo schienen kompliziert. Diese Lösung verwendet neben HTML auch jQuery / Javascript .
In meinem Fall verfolgte ich kleine Mengen mit einem Mindestwert von 1, daher min = "1" im Eingabe-Tag und abc = 1 im isNaN () -Prüfung. Bei nur positiven Zahlen können Sie diese Werte auf 0 ändern und sogar einfach min = "1" aus dem Eingabe-Tag entfernen, um negative Zahlen zu berücksichtigen.
Dies funktioniert auch für mehrere Boxen (und kann Ihnen einige Ladezeit sparen, wenn Sie sie einzeln nach ID ausführen). Fügen Sie bei Bedarf einfach die Klasse "validateNumber" hinzu.
Erläuterung
parseInt () macht im Grunde das, was Sie brauchen, außer dass es NaN zurückgibt und keinen ganzzahligen Wert. Mit einem einfachen if () können Sie den "Fallback" -Wert einstellen, den Sie in allen Fällen bevorzugen, in denen NaN zurückgegeben wird :-). Auch W3 gibt hier an, dass die globale Version von NaN vor der Überprüfung cast eingibt, was zusätzliche Beweise liefert (Number.isNaN () tut dies nicht). Alle an einen Server / Backend gesendeten Werte sollten dort noch validiert werden!
quelle
JSFiddle: https://jsfiddle.net/ug8pvysc/
quelle
Wenn Sie HTML5 verwenden können, können Sie dies tun.
<input type="number" />
Wenn nicht, müssen Sie dies entweder über Javascript tun, wie Sie sagten, es wird nicht gesendet, um es von Codebehind aus zu tun.PS hat den Code nicht getestet, aber er sollte mehr oder weniger korrekt sein, wenn nicht nach Tippfehlern gesucht wird: D Vielleicht möchten Sie noch ein paar Dinge hinzufügen, z. B. was zu tun ist, wenn die Zeichenfolge null oder leer ist usw. Sie können dies auch schneller machen: D.
quelle
Wie wäre es mit
<input type="number"...>
?http://www.w3schools.com/tags/tag_input.asp
Hier ist auch eine Frage, die einige Beispiele für die Verwendung von Javascript zur Validierung enthält .
Update: verlinkt auf bessere Frage (danke alexblum).
quelle
wenn nicht Ganzzahl 0 setzen
quelle
Die akzeptierte Antwort:
Es ist gut, aber nicht perfekt. Es funktioniert für mich, aber ich bekomme eine Warnung, dass die if-Anweisung vereinfacht werden kann.
Dann sieht es so aus, was viel schöner ist:
Würde den ursprünglichen Beitrag kommentieren, aber mein Ruf ist zu niedrig, um dies zu tun (habe gerade diesen Account erstellt).
quelle
Sie können das
<input>
Tag mit dem Attributtyp = 'Nummer' verwenden.Zum Beispiel können Sie verwenden
<input type='number' />
Dieses Eingabefeld erlaubt nur numerische Werte. Sie können auch den Minimal- und Maximalwert angeben, der von diesem Feld akzeptiert werden soll.
quelle
Weitere Informationen finden Sie in meinem Projekt zum browserübergreifenden Wertfilter des Texteingabeelements auf Ihrer Webseite in JavaScript: Eingabeschlüsselfilter . Sie können den Wert als Ganzzahl oder Gleitkommazahl filtern oder einen benutzerdefinierten Filter schreiben, z. B. einen Telefonnummernfilter. Sehen Sie sich ein Beispiel für den Code der Eingabe einer Ganzzahl an:
Siehe auch meine Seite "Integer field:" des Beispiels des Eingabeschlüsselfilters
quelle
Für allgemeine Zwecke können Sie die JS-Validierung wie folgt durchführen lassen:
Es funktioniert für Ziffernblock und normale Zifferntasten
quelle
Fügen Sie in Ihrem Eingabe-Tag Folgendes hinzu: onkeyup = "value = value.replace (/ [^ \ d] / g, '')"
quelle
Ich habe einige Antworten aktualisiert, um Folgendes hinzuzufügen:
Geben Sie an, wie viele Zahlen nach dem Dezimalpunkt zulässig sind.
quelle
Ich benutze dies für Postleitzahlen, schnell und einfach.
quelle
Wenn Sie diesen Code verwenden, können Sie "BackSpace Button" in Mozilla Firefox nicht verwenden. Sie können nur die Rücktaste in Chrome 47 && event.charCode <58; "pattern =" [0-9] {5} "erforderlich> verwenden
quelle
http://www.texotela.co.uk/code/jquery/numeric/ Numerische Eingabegutschriften an Leo Vũ für die Erwähnung dieser und natürlich TexoTela. mit einer Testseite.
quelle
Es ist besser, der REGEX-Bedingung "+" hinzuzufügen, um mehrere Ziffern (nicht nur eine Ziffer) zu akzeptieren:
<input type="text" name="your_field" pattern="[0-9]+">
quelle
Eine Möglichkeit könnte darin bestehen, ein Array zulässiger Zeichencodes zu haben und dann mithilfe der
Array.includes
Funktion zu überprüfen, ob eingegebene Zeichen zulässig sind.Beispiel:
quelle
Einfach genug?
quelle