Ich verwende den jQuery Tools Validator, der HTML5-Validierungen über jQuery implementiert. Bis jetzt hat es großartig funktioniert, bis auf eine Sache. In der HTML5-Spezifikation kann der Eingabetyp "number" sowohl Ganzzahlen als auch Gleitkommazahlen enthalten. Dies scheint unglaublich kurzsichtig zu sein, da es nur dann ein nützlicher Validator ist, wenn Ihre Datenbankfelder mit Gleitkommazahlen signiert sind (für vorzeichenlose Ints müssen Sie auf die "Muster" -Validierung zurückgreifen und verlieren dadurch zusätzliche Funktionen wie das Auf und Ab Pfeile für Browser, die dies unterstützen). Gibt es einen anderen Eingabetyp oder vielleicht ein Attribut, das die Eingabe auf nur vorzeichenlose Ganzzahlen beschränkt? Ich konnte keine finden, danke.
BEARBEITEN
Ok, Leute, ich schätze deine Zeit und Hilfe, aber ich sehe viele unverdiente Up-Voting: D. Das Setzen des Schritts auf 1 ist nicht die Antwort, da die Eingabe dadurch nicht eingeschränkt wird. Sie können weiterhin eine negative Gleitkommazahl in das Textfeld eingeben. Ich bin mir auch der Mustervalidierung bewusst (ich habe sie in meinem ursprünglichen Beitrag erwähnt), aber das war nicht Teil der Frage. Ich wollte wissen, ob HTML5 es erlaubt, eine Eingabe vom Typ "number" auf positive ganzzahlige Werte zu beschränken. Auf diese Frage scheint die Antwort "nein, tut es nicht" zu sein. Ich wollte die Mustervalidierung nicht verwenden, da dies bei der Verwendung der jQuery Tools-Validierung einige Nachteile mit sich bringt, aber es scheint, dass die Spezifikation keine sauberere Möglichkeit bietet, dies zu tun.
quelle
number
akzeptiert die Eingabe (zumindest in FF / Chrome / Safari) jetzt standardmäßig nur Ganzzahlen, es sei denn, Sie legen einen expliziten Wert für dasstep
attr fest, der Dezimalwerte zulässt. zB :step="0.01"
. MDN hier dokumentiert . In zwei Köpfen darüber, weil ich denke, dass es ein vernünftiger Standard ist, aber auch eine bahnbrechende Änderung (ja, es hat sich auf einen Code ausgewirkt, den ich geschrieben habe).Antworten:
https://www.w3.org/wiki/HTML/Elements/input/number
Das Beste, was Sie nur mit HTML erreichen können
quelle
min
, dass1
er positive Zahlen (und keine nicht negativen Zahlen) möchte.<input type="number" min="0" step="1"/>
ist die richtigste Antwort auf die Frage. Wie auch immer, was bringt es, beidesstep="1"
und zu habenpattern="\d+"
? In beiden Fällen kann ich keine Gleitkommazahlen eingeben.Setzen Sie das
step
Attribut auf1
:Dies scheint derzeit in Chrome etwas fehlerhaft zu sein, daher ist es derzeit möglicherweise nicht die beste Lösung.
Eine bessere Lösung besteht darin, das
pattern
Attribut zu verwenden, das einen regulären Ausdruck verwendet, um mit der Eingabe übereinzustimmen:\d
ist der reguläre Ausdruck für eine Zahl,*
bedeutet, dass mehr als eine davon akzeptiert wird. Hier ist die Demo: http://jsfiddle.net/b8NrE/1/quelle
number
, der andere Zeichen enthält, zeigt Chrome eine Fehlermeldung an.submit
das Posten auszulösen./\d*/.test(1.1) // true
pattern="\d*"
ist nicht das gleiche wie/\d*/
,pattern="\d*"
gleich/^(?:\d*)$/
, finden Sie in HTML5 Muster Attribut Dokumentation .Mit diesem Code kann bei der Eingabe in das Textfeld nur Ziffern eingegeben werden. Muster ist das neue Attribut, das in HTML 5 verfügbar ist.
Musterattribut doc
quelle
Der einfache Weg mit JavaScript:
quelle
replace(/(\..*)\./g, '$1')
.
nur einmal zu wiederholen , z123.556
. B. kann geschrieben werden.Das Muster ist nett, aber wenn Sie die Eingabe nur mit type = "text" auf Zahlen beschränken möchten, können Sie oninput und einen regulären Ausdruck wie folgt verwenden:
Ich warke für mich :)
quelle
Dies gilt nicht nur für HTML5. Alle Browser funktionieren einwandfrei. Versuche dies
quelle
oninput
stattdessenMuster sind immer besser für die Beschränkung, versuchen
oninput
undmin
treten 1 für die Eingabe nur Zahlen von 1 abquelle
Haben Sie versucht, das
step
Attribut wie folgt auf 1 zu setzen?quelle
Vielleicht passt es nicht in jeden Anwendungsfall, aber
kann einen guten Job machen: Geige .
Überprüfen Sie die Dokumentation .
quelle
Ja, HTML5 schon. Versuchen Sie diesen Code ( w3school ):
Sehen Sie den Min- und Max-Paremeter? Ich habe es mit Chrome 19 (funktioniert) und Firefox 12 (nicht funktioniert) versucht.
quelle
Geben Sie es einfach in Ihr Eingabefeld ein:
onkeypress='return event.charCode >= 48 && event.charCode <= 57'
quelle
Ich habe oh Chrome gearbeitet und hatte einige Probleme, obwohl ich HTML-Attribute verwende. Am Ende hatte ich diesen js-Code
quelle
Stellen Sie ein
step="any"
. Funktioniert gut. Referenz: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/quelle
Aus den Spezifikationen
Sie können es also einfach auf Folgendes einstellen
1
:quelle
Setzen Sie das
step
Attribut auf eine beliebige Gleitkommazahl, z. B. 0,01, und Sie können loslegen.quelle
quelle
Derzeit ist es nicht möglich, einen Benutzer daran zu hindern, Dezimalwerte nur mit HTML in Ihre Eingabe zu schreiben. Sie müssen Javascript verwenden.
quelle
quelle
In Future ™ (siehe Kann ich verwenden ) können Sie auf Benutzeragenten, die Ihnen eine Tastatur präsentieren, eine Texteingabe auf nur numerisch mit beschränken
input[inputmode]
.quelle
inputmode
Dies ist hauptsächlich für Handheld-Geräte gedacht und löst das richtige Tastaturlayout aus. Bei "normalen" Computern mit Tastaturen wird jedoch nicht verhindert, dass Sie das eingeben, was Sie möchten.