繁体   English   中英

检测何时使用onKeyPress而不是onKeyUp在React.js中按下Delete或Backspace键

[英]Detect when Delete or Backspace keys are pressed with onKeyPress and not with onKeyUp in React.js

按下Delete或Backspace键时,我需要激活一个功能。 呼叫是在作为表单一部分的数字输入字段中进行的。 这有效:

onKeyUp={((e) => this.onCero(e))}

这不起作用:

onKeyDown ={((e) => this.onCero(e))}

我正在调用的函数:

onCero = (e) => {
    e.preventDefault();
    if (e.key === "Delete" || e.key === "Backspace") {
        alert(e.key);
    }
};

我需要在按下键时触发函数,而不是在使用React或JavaScript释放键时触发该函数。

有想法吗? 谢谢。

您可以使用经典的JavaScript事件监听器。

就像这样:

componentDidMount() {
  document.addEventListener('keydown', this.onCero, false);
}

componentWillUnmount() {
  document.removeEventListener('keydown', this.onCero, false);
}

然后使用可以使用onCero函数中的键代码:

onCero = (e) => {
  if (e.keyCode === 27 || e.keyCode === 13) {
    alert(e.keyCode);
  }
};

您的代码似乎运行正常。

 class App extends React.Component{ constructor(props){ super(props); } onCero = (e) => { console.log(e.key); e.preventDefault(); if (e.key === "Delete" || e.key === "Backspace") { alert(e.key); } }; render(){ return( <input type="number" onKeyDown ={((e) => this.onCero(e))} /> ) } } ReactDOM.render( <App/>, document.getElementById("root") ); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="root"></div> 

您可以通过onKeyPress = {this.onCero}进行调用。 这应该工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM