据我所知,event.preventDefault 在 android 中不起作用。那么在keydown事件中防止用户在android中输入特殊字符的最佳替代方法是什么。注意:触发输入事件时的替换值解决方案很好,但在我的情况下并不能解决问题。
问问题
79 次
1 回答
0
就我而言,在 Android 上替换input
事件值的问题在于插入符号,它在键入时跳到了错误的位置。
我已经这样解决了:
let input = document.getElementById("input")
function withoutForbiddenChars(str) {
// change to your set of chars
return str.replace(/[^\d]+/g, '')
}
function handleInput(event) {
let charsBeforeCaret = input.value.slice(0, input.selectionStart)
let charsAfterCaret = input.value.slice(input.selectionStart)
charsBeforeCaret = withoutForbiddenChars(charsBeforeCaret)
charsAfterCaret = withoutForbiddenChars(charsAfterCaret)
input.value = charsBeforeCaret + charsAfterCaret
let newCaretPos = charsBeforeCaret.length
input.selectionStart = newCaretPos
input.selectionEnd = newCaretPos
}
input.addEventListener('input', handleInput, false)
于 2022-02-16T16:02:15.830 回答