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.

3voto

Luca Fagioli Punkte 11604

Vielleicht ist es nicht für jeden Anwendungsfall geeignet, aber

<input type="range" min="0" max="10" />

kann eine gute Arbeit leisten: fiddle .

Prüfen Sie die Dokumentation .

2voto

wilsonfoz Punkte 787

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>

Sehen Sie die Min- und Max-Paremeter? Ich habe es mit Chrome 19 (funktionierte) und Firefox 12 (funktionierte nicht) versucht.

2voto

Michal Punkte 4378

Derzeit ist es nicht möglich, einen Benutzer daran zu hindern, dezimale Werte in Ihre Eingabe mit HTML zu schreiben. Sie müssen Javascript verwenden.

1voto

David Hedlund Punkte 125085

Aus den technischen Daten

step="any" oder positive Gleitkommazahl
Gibt die Wertgranularität des Elementwerts an.

Sie könnten es also einfach auf 1 :

1voto

Nitish Jha Punkte 27

Ich stelle sie ein, falls jemand sie in Zukunft benötigt

const negativeValuePrevent = (e) => {
    const charCode = e.which ? e.which : e.keyCode;
    if(charCode > 31 && (charCode < 48 || charCode > 57) 
    && charCode !== 46){
      if(charCode < 96 || charCode > 105){
        e.preventDefault();
        return false;
      }
    }
    return true;
  };

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