Svelte 输入数字验证。我无法阻止输入字母
Svelte input number validation. I can't prevent the input of letters
我不确定我做错了什么。字母仍在输入中显示。
<script>
let value = "";
function isNumber(value) {
return !isNaN(value);
}
function handleInput(e) {
let oldValue = value;
let newValue = e.target.value;
console.log(oldValue, newValue, "isNumber", isNumber(newValue));
if (isNumber(newValue) && newValue.length < 17) {
value = newValue;
} else {
value = oldValue;
}
}
</script>
<div class="container">
<input
{value}
on:input|preventDefault={handleInput}
/>
</div>
这也是REPL。
你可以这样做:
else {
e.target.value = oldValue;
}
我不确定我做错了什么。字母仍在输入中显示。
<script>
let value = "";
function isNumber(value) {
return !isNaN(value);
}
function handleInput(e) {
let oldValue = value;
let newValue = e.target.value;
console.log(oldValue, newValue, "isNumber", isNumber(newValue));
if (isNumber(newValue) && newValue.length < 17) {
value = newValue;
} else {
value = oldValue;
}
}
</script>
<div class="container">
<input
{value}
on:input|preventDefault={handleInput}
/>
</div>
这也是REPL。
你可以这样做:
else {
e.target.value = oldValue;
}