抑制onKeyPress中的按键,但是onChange仍然会触发

时间:2018-07-19 14:02:33

标签: javascript reactjs

我具有与ReactJS组件的onKeyPress事件相关联的以下功能:

onKeyPress(e) {
  if (!isNumeric(e.key) && e.key !== '.') {
    return false;
  }
}

这将正确执行,因为如果输入的不是数字(例如“ b”),它将返回false。但是,问题在于,链接到控件的onChange()事件仍在触发。我希望如果您抑制键盘输入,则什么也不会改变,并且onChange事件不会触发。这似乎没有发生。

2 个答案:

答案 0 :(得分:2)

只是@Joel提供的电话号码的扩展名

onKeyPress(e) {
  if (!isNumeric(e.key) && e.key !== '.') {
    e.preventDefault();
    //return false; Not needed
  }
}

您只需要e.preventDefault(),就可以排除return false

答案 1 :(得分:1)

您需要在事件上使用preventDefault()才能停止默认事件绑定。为此修改您的代码:

onKeyPress(e) {
  if (!isNumeric(e.key) && e.key !== '.') {
    e.preventDefault();
    return false;
  }
}