我试图阻止某些角色被输入,但出于某种原因,禁令不会发生。我哪里错了?
render () {
return <form>
<input
id="username"
type="text"
placeholder="Username"
value={this.state.value}
onKeyPress={this.pale_username.bind(this)}
/>
</form>
}
和功能
pale_username(key) {
if((key.charCode < 48 || key.charCode > 57) //numbers
&& (key.charCode < 65 || key.charCode > 90) // AB
&& (key.charCode < 97 || key.charCode > 122) // ab
&& (key.charCode !== 36) // $
&& (key.charCode !== 38) // &
&& (key.charCode < 40 || key.charCode > 41) // ()
&& (key.charCode < 45 || key.charCode > 46) // -.
&& (key.charCode !== 95) // _
&& (key.charCode !== 127) // del
&& (key.charCode !== 8) // BackSpace
&& (key.charCode !== 46))
return false;
}
答案 0 :(得分:1)
我会处理这个角色&#39; ban&#39;在onChange
处理程序中。一个原因是,如果有人在输入中复制并粘贴某些内容会发生什么?防止键盘事件处理程序中的输入将无效。
我会尝试这样的事情:
handleChange(e) {
// Use whatever regex you need.
const filteredInput = e.target.value.replace(/[abAB$&()-_.*]|\d+/g, '');
this.setState(value: filteredInput)
}
然后在输入中使用它。
<input
id="username"
type="text"
placeholder="Username"
value={this.state.value}
onChange={this.handleChange.bind(this)}
/>
答案 1 :(得分:0)
onKeyDown
检测到charCode
,onKeyPress
检测到keyCode
。尝试将其更改为onKeyDown