Warum wird die Größe meiner Eingabe nicht geändert, wenn ich den Typ in ändere, type="number"
aber es funktioniert mit type="text"
?
Email: <input type="text" name="email" size="10"><br/>
number: <input type="number" name="email" size="10">
Anscheinend unterstützt der input
Typ number
kein size
Attribut oder ist nicht mit Browsern kompatibel. Sie können ihn stattdessen über CSS festlegen:
input[type=number]{
width: 80px;
}
maxlength="4"
und es wird nicht wirksam, wo es ist wietext
maxlength
wird nicht unterstützt, nur dasmax
Attribut.input[type=number][size="3"]{ width: 3em; }
usw.Falsche Verwendung.
Geben Sie die Nummer des Eingabetyps so ein, dass der Wert über die Pfeile nach oben und unten ausgewählt werden kann.
Sie suchen also im Grunde nach einem CSS-Stil mit "Breite".
Eingabetext wird historisch mit monospaced Schriftart formatiert, daher ist Größe auch die Breite, die es benötigt.
Die Eingabenummer ist neu und die Eigenschaft "Größe" hat überhaupt keinen Sinn *. Eine typische Verwendung:
<input type="number" name="quantity" min="1" max="5">
w3c docs
Fügen Sie zum Korrigieren einen Stil hinzu:
<input type="number" name="email" style="width: 7em">
BEARBEITEN: Wenn Sie einen Bereich möchten, müssen Sie festlegen
type="range"
und nicht="number"
EDIT2: * Größe ist kein zulässiger Wert (also kein Sinn). Lesen Sie die offiziellen W3C-Spezifikationen
quelle
style='width:80'
vielen DankAnstatt die Länge festzulegen, legen Sie die Max- und Min-Werte für die Zahleneingabe fest.
Das Eingabefeld wird dann an den längsten gültigen Wert angepasst.
Wenn Sie eine dreistellige Nummer zulassen möchten, stellen Sie 999 als max
<input type="number" name="quantity" min="0" max="999">
quelle
Für
<input type=number>
die HTML5-CR ist dassize
Attribut nicht zulässig. In veralteten Funktionen heißt es jedoch: „Autoren sollten die Attribute maxlength und size für Eingabeelemente, deren Typattribute sich im Status Number befinden, nicht angeben, können dies jedoch trotz gegenteiliger Anforderungen an anderer Stelle in dieser Spezifikation angeben. Ein gültiger Grund für die Verwendung dieser Attribute ist, dass ältere Benutzeragenten, die keine Eingabeelemente mit type = "number" unterstützen, das Textfeld weiterhin mit einer nützlichen Breite rendern können.Somit kann das
size
Attribut verwendet werden, es betrifft jedoch nur ältere Browser, die dies nicht unterstützentype=number
, so dass das Element auf ein einfaches Textsteuerelement zurückgreift<input type=text>
.Der Grund dafür ist, dass vom Browser erwartet wird, dass er eine Benutzeroberfläche bereitstellt, die die anderen Attribute für eine gute Benutzerfreundlichkeit berücksichtigt. Da die Implementierungen variieren können, kann jede von einem Autor auferlegte Größe die Dinge durcheinander bringen. (Dies gilt auch für das Festlegen der Breite des Steuerelements in CSS.)
Die Schlussfolgerung ist, dass Sie
<input type=number>
in einem mehr oder weniger flüssigen Setup verwenden sollten, das keine Annahmen über die Abmessungen des Elements macht.quelle
Was du willst ist
maxlength
.Sie könnten einen dieser
input
Typen in Betracht ziehen .quelle
Verwenden Sie ein Ereignis on onkeypress. Beispiel für eine Postleitzahlbox. Es erlaubt maximal 5 Zeichen und überprüft, ob die Eingabe nur aus Zahlen besteht.
Natürlich geht nichts über eine serverseitige Validierung, aber dies ist ein guter Weg.
function validInput(e) { e = (e) ? e : window.event; a = document.getElementById('zip-code'); cPress = (e.which) ? e.which : e.keyCode; if (cPress > 31 && (cPress < 48 || cPress > 57)) { return false; } else if (a.value.length >= 5) { return false; } return true; }
#zip-code { overflow: hidden; width: 60px; }
<label for="zip-code">Zip Code:</label> <input type="number" id="zip-code" name="zip-code" onkeypress="return validInput(event);" required="required">
quelle
Ändern Sie type = "number" in type = "tel".
quelle