Das maxlength
Attribut funktioniert nicht mit <input type="number">
. Dies geschieht nur in Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
quelle
Das maxlength
Attribut funktioniert nicht mit <input type="number">
. Dies geschieht nur in Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
Aus der MDN-Dokumentation für<input>
Wenn der Wert des Typ - Attribut ist
text
,search
,password
,tel
, oderurl
, gibt dieses Attribut die maximale Anzahl von Zeichen (in Unicode - Codepunkte), die der Benutzer eingeben kann; Bei anderen Steuerelementtypen wird dies ignoriert.
Wird maxlength
also <input type="number">
vom Design ignoriert .
Abhängig von Ihren Anforderungen können Sie die Attribute min
und max
wie in der Antwort vorgeschlagen verwenden ( Hinweis : Dies definiert nur einen eingeschränkten Bereich, nicht die tatsächliche Zeichenlänge des Werts, obwohl -9999 bis 9999 alle 0-4 abdecken Ziffern) oder Sie können eine reguläre Texteingabe verwenden und die Validierung des Feldes mit dem neuen pattern
Attribut erzwingen :
<input type="text" pattern="\d*" maxlength="4">
type="number"
ein neuer Typ aus der HTML 5-Spezifikation ist. Wenn der Browser in Ihnen zu testen sind nicht erkennttype="number"
es als behandelntype="text"
denen sich das respektierenmaxlength
Attribut. Dies kann das Verhalten erklären, das Sie sehen.type=number
durch Einstellen desmax
Attributs auf die Eingabe beschränken können . Dieses Attribut beschränkt nur die vom Drehfeld der Eingabe ausgewählte Anzahl.\d*
hierregex
und Muster ist unglaublich kreativ. Aber in mobilen, nicht andersAndroid
oderiOS
, es ist einetext
Eingabe, so dass es eine schlechte verursachtUX
.Die maximale Länge funktioniert nicht mit
<input type="number"
der besten Art und Weise, wie ich weiß, dasoninput
Ereignis zu verwenden, um die maximale Länge zu begrenzen. Bitte beachten Sie den folgenden Code.quelle
||0/1
oninput="this.value=this.value.slice(0,this.maxLength)"
funktionieren<input type="number">
stackoverflow.com/questions/18510845/…Viele Leute haben ein
onKeyDown()
Ereignis gepostet , das überhaupt nicht funktioniert, dh Sie können es nicht löschen, sobald Sie das Limit erreicht haben. Also statt zuonKeyDown()
benutzenonKeyPress()
und es funktioniert einwandfrei.Unten ist Arbeitscode:
quelle
number
Eingabetyp beibehalten wirdIch habe zwei Möglichkeiten, wie Sie das tun können
Erstens: Verwenden Sie es
type="tel"
, es funktioniert wietype="number"
auf Mobilgeräten und akzeptiert die maximale Länge:Zweitens: Verwenden Sie ein wenig JavaScript:
quelle
Sie können die Attribute min und max verwenden .
Der folgende Code macht dasselbe:
quelle
9999
der Benutzer manuell in eine Zahl eingeben kann, die diese Länge überschreitet.Ändern Sie Ihren Eingabetyp in Text und rufen Sie mit dem Ereignis "oninput" die Funktion auf:
Verwenden Sie jetzt Javascript Regex, um Benutzereingaben zu filtern und nur auf Zahlen zu beschränken:
Demo: https://codepen.io/aslami/pen/GdPvRY
quelle
Ich bin einmal auf dasselbe Problem gestoßen und habe diese Lösung in Bezug auf meine Bedürfnisse gefunden. Es kann jemandem helfen.
Viel Spaß beim Codieren :)
quelle
Sie können dies auch für numerische Eingaben mit Längenbeschränkung versuchen
quelle
tel
Eingabe automatisch als solche validiert, und in einigen seltsamen Fällen werden führende0
s in1
s geändert .DEMO - JSFIDDLE
quelle
Hier ist meine Lösung mit jQuery ... Sie müssen Ihrem Eingabetyp = Nummer die maximale Länge hinzufügen
Und behandeln Kopieren und Einfügen:
Ich hoffe es hilft jemandem.
quelle
this.value = this.value.slice(0, this.maxLength);
Glauben Sie, dass dies ein Problem hat? Ich habe noch keine gefunden. Es behandelt auch eingefügten Text.Nach meiner Erfahrung sind die meisten Probleme, bei denen gefragt wird, warum
maxlength
ignoriert wird, darauf zurückzuführen, dass der Benutzer mehr als die "zulässige" Anzahl von Zeichen eingeben darf.Wie andere Kommentare erwähnten,
type="number"
Eingänge haben keinmaxlength
Attribut und stattdessen eine hatmin
undmax
Attribut.Damit das Feld die Anzahl der Zeichen begrenzt, die eingefügt werden können, während der Benutzer sich dessen bewusst ist, bevor das Formular gesendet wird (der Browser sollte ansonsten den Wert> max identifizieren), müssen Sie (zumindest vorerst) a hinzufügen Zuhörer auf dem Feld.
Hier ist eine Lösung, die ich in der Vergangenheit verwendet habe: http://codepen.io/wuori/pen/LNyYBM
quelle
Ich weiß, dass es bereits eine Antwort gibt, aber wenn Sie möchten, dass sich Ihre Eingabe genau wie das
maxlength
Attribut verhält oder so nah wie möglich ist, verwenden Sie den folgenden Code:quelle
Chrome (technisch gesehen Blink) implementiert keine maximale Länge für
<input type="number">
.Die HTML5-Spezifikation besagt, dass die maximale Länge nur für die Typen Text, URL, E-Mail, Suche, Telefon und Kennwort gilt.
quelle
Die absolute Lösung, die ich kürzlich ausprobiert habe, ist:
quelle
Ich werde das schnell und einfach verständlich machen!
Verwenden Sie anstelle von maxlength for
type='number'
(maxlength soll die maximale Anzahl von Buchstaben für eine Zeichenfolge in einemtext
Typ definieren)min=''
undmax=''
.Prost
quelle
<input type="number">
ist nur das ... eine Zahleneingabe (wenn auch nicht von einer Zeichenfolge konvertiert, um über Javascript zu schweben).Ich vermute, es schränkt die Zeichen bei der Schlüsseleingabe durch nicht ein,
maxLength
oder Ihr Benutzer könnte in einer "Schlüsselfalle" stecken bleiben, wenn er zu Beginn eine Dezimalstelle vergessen hat (Versuchen Sie, einen.
at-Index zu setzen,1
wenn bereits ein<input type"text">
"maxLength" -Attr erreicht wurde ). Es wird jedoch beim Senden des Formulars überprüft, wenn Sie einmax
Attribut festlegen .Wenn Sie versuchen, eine Telefonnummer einzuschränken / zu validieren, verwenden Sie den
type="tel"
Wert attr / value. Es gehorcht demmaxLength
attr und ruft nur die Handynummern-Tastatur auf (in modernen Browsern), und Sie können die Eingabe auf ein Muster beschränken (dhpattern="[0-9]{10}"
).quelle
Für React-Benutzer
Ersetzen Sie einfach 10 durch Ihre maximale Länge
quelle
maxlenght - Text vom Typ Eingabe
Verwenden von jQuery:
maxlenght - Eingabetypnummer
JS
HTML
quelle