Ich habe ein einfaches Eingabefeld mit Typ auf Nummer festgelegt. Dies wird verwendet, um eine Eingabe im Bereich [0,255] (für RGB) einzugeben.Strict Nummer Eingabefeld
<input type="number" id="inputBox" min="0" max="255" step="1" />
In seiner jetzigen Form wird dieses Eingabefeld die folgenden Werte annehmen:
012 // zero prefixed numbers
1.0 // floating-point
.1 // floating-point
-5 // range underflow
300 // range overflow
ich nur die ganzen Zahlen im Bereich von [0255] annehmen möchten. Also, kein Null-Präfix, keine Fließkommazahlen.
inputBox.addEventListener("input", function() {
if (this.validity.rangeUnderflow) {
this.value = this.min;
}
else if (this.validity.rangeOverflow) {
this.value = this.max;
}
});
und Floating-Point-Problem mit keydown
Ereignisse (durch nicht erlaubt .
): bei der Lösung
inputBox.addEventListener("keydown", function (e) {
if (!isFloat(this.step)) {
if (e.key == ".") {
e.preventDefault();
}
}
});
function isFloat(f) {
var f = parseFloat(f);
var floor = Math.floor(f);
var fraction = f - floor;
if (fraction > 0) {
return true;
}
return false;
}
Ich bin fest
Ich habe den Bereich Problem mit input
Ereignisse gelöst das Null-Präfix-Zahlenproblem. Ich kann die folgende Codezeile in dem input
Ereignisse verwendet Null-Präfix
this.value = this.valueAsNumber; // or parseInt(this.value, 10)
zu entfernen, die fein funktionieren, aber diese Art von Pausen des Funktionalität des Eingabefeldes. Ich kann keine Werte mit der Notation E
eingeben. In meinem Fall brauche ich das nicht, aber ich könnte woanders hin. Sobald ich 1e
eingib, wird NaN
ausgewertet und es wird dem Eingabefeld zugewiesen.
Gibt es eine Möglichkeit, diese beiden zu arbeiten?
Alle Anforderungen mit Ausnahme der vorangestellten Nullen können mit '' –
erhalten werden Warum brauchen Sie 1e? Klingt für mich wie zwei getrennte Ausgaben. Sie benötigen 1 Eingang, der nur 0-255 erlaubt, und einen anderen, der '1e' unterstützt. Aber ich glaube nicht, dass Sie jemals wollen, dass ein RGB-Eingang etwas wie "1e" akzeptiert, oder? – KevBot
@KevBot Wenn ich diese Funktionalität in einem anderen Projekt verwenden möchte, das exponentielle Werte benötigt, werde ich dieses Problem erneut haben. Also warum ignorierst du es jetzt? – akinuri