개발하자
스벨테 입력 번호 유효성 검사. 글자 입력을 막을 수 없다
Cuire
2023. 11. 6. 03:12
반응형
스벨테 입력 번호 유효성 검사. 글자 입력을 막을 수 없다
나는 내가 무엇을 잘못하고 있는지 잘 모르겠다. 입력에 아직도 글자가 표시되고 있다.
<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>
여기도 있어요.
그냥 이렇게 할 수 있을거야:
else {
e.target.value = oldValue;
}
입력 시 사용자에게 경고하려면... 아래에 쓰다
<script>
let value = "";
// Check if user input is number
const onKeyPress = e => {
if (!isFinite(e.key)) {
alert('Not A number')
}
};
$: value = value.replace(/[^0-9]/g, '')
</script>
<input bind:value on:keypress={onKeyPress} />
사용자에게 경고하지 않고.. 아래에 쓰다
<script>
let value = "";
$: value = value.replace(/[^0-9]/g, '')
</script>
<input bind:value />
입력 유형을 "number"로 설정합니다.
<input
type='number'
bind:value
on:input|preventDefault={handleInput}
/>
다른 대답들에서 영감을 얻어서 내게 효과가 있었던 것은 다음과 같다.
다음 내용:
- 값을 숫자로 강요하다
- 값이 숫자로 나타나지 않도록 하는 문자를 방지합니다
- 양식 제출을 돕기 위해 추가로 입력을 받다
export let value: number;
function updateValue(e: Event): void {
const target = e.target as HTMLInputElement;
const newValue = Number(target.value);
if (!isNaN(newValue)) {
value = newValue;
} else {
// reset to old value
target.value = value.toString();
}
}
<input
type="text"
inputmode="numeric"
pattern="[0-9.]*"
{value}
on:input|preventDefault={updateValue}
/>
반응형