入力時に数字を書式化しようとしていますが、有効な数字のみを挿入できます。私は小数点を除いてすべてが働いています。入力ボックスは、私が望むように多くの小数を挿入することができますが、私は1つだけを許可したいと思います(最後のreplace()
を参照)。ここで小数点以下1桁しか入力できない
element.oninput = e => {
let value = e.currentTarget.value;
let result = value
// Remove anything that isn't valid in a number
.replace(/[^0-9-.]/g, '')
// Remove all dashes unless it is the first character
.replace(/(?!^)-/g, '')
// Remove all periods unless it is the last one
.replace(/(?!)\./g, '');
element.value = result;
}
https://jsfiddle.net/c4f1L3kv/1/
いくつかの有効な入力です。ここ
123.123
-123.12
123
-123
.123
-.123
は、いくつかの不正な入力です:
123-123
1-2-3
123.123.123
123-123..12
私はこれが好きですが、前の期間を削除して別の期間の挿入を無効にすることはできますか? –
@GetOffMyLawnジョシュは貼り付けもやっていると思う。ユーザーが新しいものを挿入するのを妨げると、間違った番号を貼り付けることによってそれをバイパスすることができます。 –