首页 > 解决方案 > 替代已弃用的 e.which,以防止输入非数字字符?

问题描述

我有一个非常简单的解决方案,利用e.which, 来防止在输入字段中输入非数字字符:

document.querySelector("input").addEventListener("keypress", function (e) {
  if (e.which < 48 || e.which > 57) {
    e.preventDefault();
  }
});

但是,由于e.which已被弃用,是否有另一种简单的解决方案可以用来解决这个确切的问题?如果有帮助,这是 CodePen 的演示:https ://codepen.io/obliviga/pen/YzWmaMp?editors=1111

标签: javascripteventsevent-handlingdom-eventskeyboard-events

解决方案


能够使用 e.key,如评论中建议的 luk2302:

// Only allow the input of numerical characters and other essential keys
if (
  e.key !== '1'
  && e.key !== '2'
  && e.key !== '3'
  && e.key !== '4'
  && e.key !== '5'
  && e.key !== '6'
  && e.key !== '7'
  && e.key !== '8'
  && e.key !== '9'
  && e.key !== '0'
  && e.key !== 'Tab'
  && e.key !== 'Backspace'
  && e.key !== 'ArrowLeft'
  && e.key !== 'ArrowRight'
) {
  e.preventDefault();
}

推荐阅读