event.preventDefault()无法与keyCode 229一起使用?

时间:2019-12-06 11:50:16

标签: javascript html

我试图创建一个仅启用整数的输入字段,但是在 Android Chrome 键盘中,我无法阻止用户输入'。键。 “。”的键控代码。 key为229,cancelable也为true,这对于event.preventDefault()是必需的。 Console.log output for . key mobile

代码随即调用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)'>

2 个答案:

答案 0 :(得分:0)

如果您更改条件的位置怎么办

tf.data.Dataset
tf.py_function

答案 1 :(得分:0)

尝试通过处理事件触发器来解决它。只需添加事件oninput,该事件将在输入更改时触发,之后,如果您要谈论的是.,则可以删除最后一个字符,并更新输入的值。