Javascript 在react中未定义的事件
我试图将文本字段中的键输入限制为数字、退格或空格,因此我在设置状态之前进行检查,并在其他情况下防止事件的默认行为,但我无法找到事件的Javascript 在react中未定义的事件,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我试图将文本字段中的键输入限制为数字、退格或空格,因此我在设置状态之前进行检查,并在其他情况下防止事件的默认行为,但我无法找到事件的属性或keyCode。 我尝试了event.persist()来查看,但仍然相同,在event中没有名为的属性 在事件的nativeEvent中有一个,但它始终为0 这是我的app.js中的组件,我使用的是material ui的textfield,而不是普通的输入 MobileNumber.tsx: 从“React”导入React; 从“@material ui/
属性或keyCode
。
我尝试了event.persist()
来查看,但仍然相同,在event
中没有名为的属性
在事件的nativeEvent
中有一个,但它始终为0
这是我的app.js中的组件,我使用的是material ui的textfield,而不是普通的输入
MobileNumber.tsx
:
从“React”导入React;
从“@material ui/core”导入{TextField};
导出接口MobileNumberProps{
}
导出接口MobileNumberState{
价值:任何
}
类MobileNumber扩展了React.Component{
状态={
值:0,
}
handleChange=(值:任意)=>{
this.setState({value:value})
}
render(){
返回(
{
event.persist();
console.log('event is',event);
if(event.which!=8&&event.which!=0&&event.which<48 | | event.which>57)){
console.log('stopped')
event.preventDefault();
}
否则{
日志('event which',event.which);
console.log('allowed');
让值=event.target.value
这个.handleChange(值);
}
}}
value={this.state.value}
/>
);
}
}
导出默认移动枚举器;
两个可能的问题:
它们都不推荐使用,所以React的合成事件中没有它们也就不足为奇了。现代房地产是
例如,这:
if(event.which!=8&&event.which!=0&&event.which<48 | | event.which>57)){
可以这样写:
if(event.key!=“Backspace”&&event.key!=“event.key<”0”| | event.key>“C”)){
请注意,change
事件是一个普通的事件,而不是一个特定于键的事件。它没有特定于键的信息,因为它不是特定于键的事件。如果您需要知道按下了什么键(在本例中可能是您想要的),请使用键事件
旁注:在您的示例中,没有理由调用persist
,您不会尝试在事件处理程序返回后使用属性。通常,请避免persist
。如果在处理程序返回后确实需要key
,您应该将其抓取到局部变量:
const { key } = event;
// ...use `key`...
@ash1102-change
不是键盘事件,我已经更新了答案来解决这个问题。谢谢t.j。onChange是真正的问题,它与onkeydown一起工作很好,但我一定会使用key来代替它