Derzeit habe ich den folgenden Code
<input type="number" />
es kommt zu so etwas heraus
Die kleinen Auswahlelemente auf der rechten Seite lassen die Zahl negativ werden. Wie verhindere ich das?
Ich habe Zweifel an der Verwendung type="number"
, es verursacht mehr Probleme als es löst, ich werde es trotzdem auf geistige Gesundheit überprüfen, also sollte ich einfach wieder verwenden type="text"
?
Antworten:
Fügen Sie ein
min
Attribut hinzuquelle
min="0.000001"
hilft in den meisten Fällen. JavaScript konvertiert es mit mehr als 6 Dezimalstellen in das Exponentenformat.Ich habe eine andere Lösung gefunden, um eine negative Zahl zu verhindern.
quelle
oninput="validity.valid||(value='');"
verhindert, dass man fünf Zahlen eingibtEs hängt davon ab, wie genau Sie sein möchten. Wenn Sie nur ganze Zahlen akzeptieren möchten, als:
Wenn Sie Floats mit beispielsweise zwei Nachkommastellen wünschen:
quelle
max
Wert angeben .Sie können erzwingen, dass die Eingabe nur eine positive Ganzzahl enthält, indem Sie sie
onkeypress
innerhalb desinput
Tags hinzufügen .Hier wird
event.charCode >= 48
sichergestellt, dass nur Zahlen größer oder gleich 0 zurückgegeben werden, während dasmin
Tag sicherstellt, dass Sie durch Scrollen in der Eingabeleiste ein Minimum von 1 erreichen können.quelle
Sie können Folgendes verwenden, um
type="number"
nur positive Zahlen zu akzeptieren:quelle
Sie können eine negative Eingabe in einem Zahleneingabeformular folgendermaßen verhindern:
quelle
Versuchen
<input type="number" pattern="^[0-9]" title='Only Number' min="1" step="1">
quelle
Wenn Sie einen Text eingeben müssen, funktioniert das Muster auch
quelle
Ich kann nicht die perfekte Lösung finden, da einige Arbeiten zum Eingeben, aber nicht zum Kopieren und Einfügen verwendet werden. Einige sind umgekehrt. Diese Lösung funktioniert bei mir. Es verhindert negative Zahlen, indem Sie "e" eingeben, "e" kopieren und einfügen.
eine Funktion erstellen.
Fügen Sie diese Eigenschaften zur Eingabe hinzu. Diese beiden verhindern das Kopieren und Einfügen von nicht nummeriertem Text, einschließlich "e". Sie müssen beide zusammen haben, um wirksam zu werden.
Wenn Sie Vue verwenden , können Sie diese Antwort hier verweisen . Ich habe es zu einem Mixin extrahiert, das wiederverwendet werden kann.
quelle
Fügen Sie diesen Code in Ihren Eingabetyp ein.
beispielsweise:
quelle
Eine andere Lösung besteht darin, Js zu verwenden, um es positiv zu machen (die Option min kann deaktiviert werden und ist nicht gültig, wenn der Benutzer smth eingibt). Das negative Ereignis if ist nicht erforderlich und on ('keydown') kann ebenfalls verwendet werden!
quelle
Dies hängt davon ab, ob Sie ein int- oder ein float-Feld möchten. So würden die beiden aussehen:
Dem int-Feld ist die korrekte Validierung zugeordnet, da seine min 1 ist. Das float-Feld akzeptiert jedoch 0; Um dies zu beheben, können Sie einen weiteren Einschränkungsvalidator hinzufügen :
JSFiddle hier.
Beachten Sie, dass keine dieser Lösungen den Benutzer vollständig daran hindert, ungültige Eingaben einzugeben. Sie können jedoch anrufen
checkValidity
oderreportValidity
herausfinden, ob der Benutzer gültige Eingaben eingegeben hat.Natürlich sollten Sie immer noch eine serverseitige Validierung haben, da der Benutzer die clientseitige Validierung immer ignorieren kann.
quelle
Versuche dies:
null
undnegitive
Werte.quelle
Wenn Sie versuchen, eine negative Zahl einzugeben, blockiert das Ereignis onkeyup dies. Wenn Sie den Pfeil auf der Eingabenummer verwenden, löst das Ereignis onblur diesen Teil auf.
quelle
quelle
Mit der Texteingabe können Sie diese für eine bessere Validierung verwenden.
quelle
Versuche dies:
quelle