Es hängt davon ab, ob Sie ein int- oder float-Feld wünschen. So würden die beiden aussehen:
Dem int-Feld ist die korrekte Validierung zugeordnet, da sein min 1 ist. Das Gleitkommazahlenfeld akzeptiert 0, um damit umzugehen, können Sie einen weiteren Constraint-Validator hinzufügen:
function checkIsPositive(e) {
const value = parseFloat(e.target.value);
if (e.target.value === "" || value > 0) {
e.target.setCustomValidity("");
} else {
e.target.setCustomValidity("Bitte geben Sie einen Wert größer als 0 ein.");
}
}
document.getElementById("float-field").addEventListener("input", checkIsPositive, false);
JSFiddle hier.
Beachten Sie, dass keines dieser Lösungen den Benutzer vollständig davon abhält, ungültige Eingaben zu versuchen, aber Sie können checkValidity
oder reportValidity
aufrufen, um festzustellen, ob der Benutzer gültige Eingaben eingegeben hat.
Natürlich sollten Sie weiterhin eine serverseitige Validierung haben, da der Benutzer die clientseitige Validierung immer ignorieren kann.