仅使用onChange和值,并集中在<input/>(最好没有jQuery的)内部时,是否可以通过按Enter键来触发方法?因为,只希望用户按下“ Enter”键才能更新name字符串状态。
onChange
<input/>
jQuery
这是代码:
constructor(props) { super(props); this.state = { name: '', } } textChange(event) { this.setState({ name: event.target.value, }) } //Would like to trigger this once 'Enter' key is pressed while focused inside `<input/>` enterPressed() { var name = this.state.name; } render() { return ( <input placeholder='Enter name' onChange={this.textChange.bind(this)} value={this.state.name} /> ) }
您可以做的是使用React的关键事件,如下所示:
<input placeholder='Enter name' onChange={this.textChange.bind(this)} value={this.state.name} onKeyPress={this.enterPressed.bind(this)} />
现在,要检测回车键,请将enterPressed功能更改为:
enterPressed
enterPressed(event) { var code = event.keyCode || event.which; if(code === 13) { //13 is the enter keycode //Do stuff in here } }
因此,这是向输入元素添加事件侦听器。请参阅React的键盘事件。enterPressed然后,该函数在发生事件时被触发,现在enterPressed检测到键码,如果是13,则执行一些操作。
这是展示事件的小提琴。
注:该onKeyPress和onKeyDown事件的即时触发用户按下。您可以onKeyUp用来解决这个问题。