반응형
스벨테 입력 번호 유효성 검사. 글자 입력을 막을 수 없다
나는 내가 무엇을 잘못하고 있는지 잘 모르겠다. 입력에 아직도 글자가 표시되고 있다.
<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}
/>
반응형
'개발하자' 카테고리의 다른 글
"수출"을 패키지로 어떻게 사용할 수 있나요.json은 nested submodules와 TypeScript? (0) | 2023.11.07 |
---|---|
이 Kubernetes 배포 환경에서 ErrrImagePull 오류가 발생하는 이유는 무엇입니까? (0) | 2023.11.06 |
펄럭임: 자동 완성 제안은 이름 대신 '객체의 인스턴스'를 표시합니다 (0) | 2023.11.05 |
href를 클릭하면 새 URL이 Svelte의 페이지를 다시 로드하지 않습니다 (0) | 2023.11.05 |
svelte에서 URL 쿼리 문자열 액세스 (0) | 2023.11.04 |