如何防止用户在 android 浏览器中在 keydown 事件中输入特殊字符(event.preventDefault 不是 wotking)

sin*_*ina 5 html javascript android-chrome

据我所知,event.preventDefault 在 android 中不起作用。那么阻止用户在 android 中 keydown 事件中输入特殊字符的最佳替代方法是什么?注意:输入事件触发时的替换值解决方案很好,但在我的情况下并不能解决问题。

小智 0

就我而言,在 Android 上替换事件值的问题input在于插入符号,它在打字时跳到了错误的位置。

\n

我\xe2\x80\x99已经这样解决了:

\n
let input = document.getElementById("input")\n\nfunction withoutForbiddenChars(str) {\n    // change to your set of chars\n    return str.replace(/[^\\d]+/g, \'\')\n}\n\nfunction handleInput(event) {\n    let charsBeforeCaret = input.value.slice(0, input.selectionStart)\n    let charsAfterCaret = input.value.slice(input.selectionStart)\n \n    charsBeforeCaret = withoutForbiddenChars(charsBeforeCaret)\n    charsAfterCaret = withoutForbiddenChars(charsAfterCaret)\n    \n    input.value = charsBeforeCaret + charsAfterCaret\n    \n    let newCaretPos = charsBeforeCaret.length\n\n    input.selectionStart = newCaretPos\n    input.selectionEnd = newCaretPos\n}\n\ninput.addEventListener(\'input\', handleInput, false)\n
Run Code Online (Sandbox Code Playgroud)\n

演示: https: //codepen.io/udovichenko/pen/vYWWjmR

\n