私はnumber型に設定された単純な入力フィールドを持っています。これは[0,255]の範囲(RGBの場合)の入力を入力するために使用されます。厳密な数値入力フィールド
<input type="number" id="inputBox" min="0" max="255" step="1" />
現在の形では、この入力フィールドには、次の値を受け入れます:
012 // zero prefixed numbers
1.0 // floating-point
.1 // floating-point
-5 // range underflow
300 // range overflow
が、私はそれが[0255]の範囲の整数のみを受け入れるようにしたいです。したがって、ゼロ接頭辞はなく、浮動小数点数はありません。 (.
を許可しないことによって)イベントを使用して
inputBox.addEventListener("input", function() {
if (this.validity.rangeUnderflow) {
this.value = this.min;
}
else if (this.validity.rangeOverflow) {
this.value = this.max;
}
});
と浮動小数点問題:
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;
}
は私が解決にこだわっている
私はinput
イベントを使用して範囲の問題を解決してきました接頭辞がゼロの問題。私はゼロプレフィックス正常に動作している
this.value = this.valueAsNumber; // or parseInt(this.value, 10)
が、休憩のこの種の入力フィールドの機能を削除するinput
イベントに次のコード行を使用することができます。 E
という表記法で値を入力することはできません。私の場合、私はする必要はありませんが、私は別の場所にいるかもしれません。 1e
と入力するとすぐに、NaN
と評価され、入力項目に割り当てられます。
これらの両方を動作させる方法はありますか?
接頭辞がゼロ以外のすべての要件は、で取得できます。 –
なぜ1eが必要ですか? 2つの別々の問題のように私に聞こえます。 0-255しか許さない1つの入力と、 '1e'をサポートするもう1つの入力が必要です。しかし、RGB入力が '1e'のようなものを受け入れることを望むとは思わないでしょうか? – KevBot
@KevBot指数値を使用する必要がある別のプロジェクトでこの機能を使用したい場合は、この問題に直面します。だから、なぜ今それを無視する? – akinuri