React 表单怎么使其回车才修改表单的值?

1、比如有如下可控表单:

<input type="text" value={name}/>

我怎么使其修改值的时候不触发onChange,而是等我按回车或失去焦点的时候才触发onChange呢?

阅读 11k
3 个回答

onChange 是浏览器自动出发的,不是你能左右的,你应该是想按回车或失去焦点的时候才执行某段函数吧?
你可以这样写:

<input type="text" value={tmp} onChange={this.changeValue} onBlur={this.handler} onKeyup={this.onKeyup}/>
onChange = (e) => {
    this.setState({
        tmp : e.target.value
     })
}
onKeyup = (e) => {
    e.keyCode === 13 && this.handler()
}
handler = () => {
    // 你的逻辑
}
新手上路,请多包涵

不要捕获onChange,捕获key和焦点相关的事件不久好了吗

不知道有没有现成的,但可以弄个临时的数据来存储

<input type="text" value={tmp} onChange={this.changeValue}/>
changeValue : function(event){
 this.setState({
    tmp : event.target.value
 })
}
//这个写在初始化的方法里面:
$("input").bind("keypress", function(event){
 if (event.keyCode == 13) {
   this.setState({
   name : this.state.tmp
   })    
 }
})

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题