354 Stimmen

Zahleneingabetyp, der nur ganze Zahlen akzeptiert?

Ich verwende die jQuery Tools Prüfer die HTML5-Validierungen durch jQuery implementiert.

Bis auf eine Sache hat es bisher gut funktioniert. In der HTML5-Spezifikation ist die Eingabe Typ "number" kann sowohl Ganzzahlen als auch Gleitkommazahlen enthalten.

Dies scheint unglaublich kurzsichtig zu sein, da es nur ein nützlicher Validator sein wird, wenn Ihre Datenbankfelder vorzeichenbehaftete Gleitkommazahlen sind (für vorzeichenlose Ints müssen Sie auf pattern Validierung und verlieren damit zusätzliche Funktionen wie die Auf- und Abwärtspfeile bei Browsern, die dies unterstützen).

Gibt es eine andere Eingabe Typ oder vielleicht ein Attribut das würde einschränken die Eingabe auf nur vorzeichenlos Ganzzahlen ?

Ich konnte keine finden.


Den Schritt auf 1 zu setzen ist keine Lösung, da dies die Eingabe nicht einschränkt. Sie können immer noch eine negative Gleitkommazahl in das Textfeld eingeben.

Außerdem bin ich mir 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 die Beschränkung einer Eingabe vom Typ "Zahl" auf positive ganzzahlige Werte erlaubt. Die Antwort auf diese Frage lautet offenbar "Nein, das ist nicht der Fall".

Ich wollte keine Mustervalidierung verwenden, da dies einige Nachteile bei der Verwendung von jQuery Tools Validierung, aber es scheint, dass die Spezifikation nicht für eine sauberere Art, dies zu tun.

44voto

Viktor Karpyuk Punkte 715

Pattern ist gut, aber wenn Sie die Eingabe nur auf Zahlen mit type="text" beschränken wollen, können Sie oninput und eine Regex wie unten verwenden:

<input type="text" oninput="this.value=this.value.replace(/[^0-9]/g,'');" id="myId"/>

I warks for me :)

21voto

karthick Punkte 9

Dies gilt nicht nur für HTML5. Es funktioniert in allen Browsern. Versuchen Sie dies:

document.getElementById("input").addEventListener("keyup", function() {
  this.value = this.value.replace(/[^0-9]/g, "");
});

<input id="input" type="text">

13voto

Kamil Kiełczewski Punkte 69048

Kürzeste

Dies ist eine Verbesserung der Größe von R. Yaghoobi antworten

<input type="number" oninput="this.value|=0"/>

Wir verwenden hier die Standardabkürzung für den Operator "OR", z.B. 9 | 2 = 11 im Binärformat: 0b1001 | 0b1010 = 0b1011 . Dieser Operator wandelt Zahlen zunächst implizit in ganze Zahlen um und führt dann OR durch. Da OR mit Null aber nichts ändert, wird die Zahl in eine ganze Zahl umgewandelt. OR mit einer Nicht-Zahlenkette ergibt 0.

13voto

Noothan y v Punkte 149

Muster sind für die Einschränkung immer vorzuziehen, versuchen Sie oninput y min 1 eingeben, um nur Zahlen ab 1 einzugeben

<input type="text" min="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');"
                                value=${var} >

8voto

illeas Punkte 282

Geben Sie es einfach in Ihr Eingabefeld ein: onkeypress='return event.charCode >= 48 && event.charCode <= 57'

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