Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在reactJS中获取keyCode_Reactjs - Fatal编程技术网

如何在reactJS中获取keyCode

如何在reactJS中获取keyCode,reactjs,Reactjs,我得到的密钥代码未定义 我需要禁用空格键,同时输入密码,但我得到的密钥码为未定义 blockSpace(e) { e.persist(); const key = e.keyCode; console.log("key", key); if (key === 32) { e.preventDefault(); } } 上面的控制台。日志(“键”,键)未定义 <GenericInputBox onChange ={this.blo

我得到的密钥代码未定义

我需要禁用空格键,同时输入密码,但我得到的密钥码为未定义

blockSpace(e) {
    e.persist();
    const key = e.keyCode;
    console.log("key", key);
     if (key === 32) {
      e.preventDefault();
    } 
  }
上面的控制台。日志(“键”,键)未定义

<GenericInputBox onChange ={this.blockSpace} />


我已经检查了类似的stackoverflow帖子,并在代码中包含了e.persist(),但仍然没有定义。

onKeyPress
e.keyCode始终是
0
,并且
e.charCode
具有正确的值。如果使用的是
onKeyDown
,请在
e.charCode
中输入正确的代码

blockSpace(e) {
   e.persist();
   const key = e.keyCode;
   console.log("key", key);
    if (key === 32) {
     e.preventDefault();
   } 
 }

<GenericInputBox onKeyPress={this.blockSpace} />

^^如果值上有空格,那么阻止默认值或任何逻辑

onKeyDown解决了我的问题,其他逻辑是相同的-只是使用onKeyDown而不是onChange.onKeyPress对我也不起作用

你能在调用blockSpace的地方添加HTML部分吗?@fahadtufail这与
onChange={this.blockSpace}一样
Try
onKeyDown={this.blockSpace}
event来捕获keycode。更改事件在修改输入值后激发,因此即使它有一个对键的引用(它没有;有许多其他方法来更改输入值),它也无法阻止特定字符。请尝试输入
或在onchange事件中从值中删除空格。
blockSpace(e) {
   e.persist();
    const value = e.target.value;

    // check if value got a space anywhere
    if (value.includes(' ') {
     e.preventDefault(); // or whatever logic
   } 
 }