我正在尝试创建一个仅启用整数的输入字段,但在 Android Chrome 键盘中我无法阻止用户输入“.” key 。 '.' 的键码key 是 229,cancelable 也是 true,这是 event.preventDefault() 所必需的。
该代码调用 e.preventDefault(),但不知何故,它仅适用于 Chrome 中的移动输入字段。 Firefox 和 iOS Safari 运行良好。
function checkNumeric(e) {
if ([46, 8, 9, 27, 13, 110].indexOf(e.keyCode) !== -1 ||
// Allow: Ctrl+A
(e.keyCode === 65 && e.ctrlKey === true) ||
// Allow: Ctrl+C
(e.keyCode === 67 && e.ctrlKey === true) ||
// Allow: Ctrl+X
(e.keyCode === 88 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault()
}
}
<input type='tel' onkeydown='checkNumeric(event)'>
最佳答案
如果更改展示位置条件会怎样
function checkNumeric(e) {
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault()
}
if ([46, 8, 9, 27, 13, 110].indexOf(e.keyCode) !== -1 ||
// Allow: Ctrl+A
(e.keyCode === 65 && e.ctrlKey === true) ||
// Allow: Ctrl+C
(e.keyCode === 67 && e.ctrlKey === true) ||
// Allow: Ctrl+X
(e.keyCode === 88 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return
}
}
<input type='tel' onkeydown='checkNumeric(event)'>
关于javascript - event.preventDefault() 不适用于 keyCode 229?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59212595/