soc*_*pet 7 javascript regex html5 reactjs react-redux
我一直在努力是一个文本input变窄下来<option>在<select>按照用户类型.它正在运行,但我现在关心的是安全性,用户传入的内容input以及潜在的恶意条目.
我想我可以做类似的事情,<input placeholder='[a-zA-Z]' />但它仍然允许在文本框中输入其他字符.
我在这里做错了什么,以及只允许输入字母数字的替代方案是什么?
onInputChange(term) {
this.setState({ term });
}
renderOptionsSelect(term) {
return _.map(this.props.pos_list, p => {
var searchTerm = this.state.term.toLowerCase();
if (p.pos_code.toLowerCase().match(searchTerm)) {
return (
<option key={p.pos_code} value={p.pos_code}>{p.pos_code}</option>
);
}
});
}
// render the main element of the container
render() {
return (
<div className='panel panel-default'>
<div className='panel-heading'>
<h4><strong>Basic Query</strong></h4>
</div>
<div className='panel-body'>
<input
pattern='[a-zA-Z]'
className='form-control'
placeholder='Enter Keyword or Position Code'
value={this.state.term}
onChange={event => this.onInputChange(event.target.value)}
/>
<hr />
<h4>Position:</h4>
<select className='form-control'>
<option></option>
{this.renderOptionsSelect()}
</select>
<br />
<h4>Data Cut:</h4>
<select className='form-control' disabled={true} />
</div>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
这很容易。你:
onInputChange为input事件而不是change事件 ( onInput={event => this.onInputChange(event.target.value)})注册您的方法。onInputChange在改变状态之前清理接收到的值。