Javascript 按enter键后清除文本区域
我想在按下回车键后清除文本区内容。但是,按enter键时,文本区域将清除,但enter键仍保留(新行)。我怎样才能解决这个问题Javascript 按enter键后清除文本区域,javascript,reactjs,Javascript,Reactjs,我想在按下回车键后清除文本区内容。但是,按enter键时,文本区域将清除,但enter键仍保留(新行)。我怎样才能解决这个问题 constructor(){ this.state = { text : '' } } keypress(e){ if(e.key == 'Enter'){ this.setState({ send_message: '' }) } } <textarea value={this.state.tex
constructor(){
this.state = { text : '' }
}
keypress(e){
if(e.key == 'Enter'){
this.setState({
send_message: ''
})
}
}
<textarea value={this.state.text} placeholder="Text" rows="1" className="form-textarea typing-area" onKeyPress={this.keypress.bind(this)}></textarea>
constructor(){
this.state={text:'}
}
按键(e){
如果(e.key=='Enter'){
这是我的国家({
发送消息:“”
})
}
}
当键为“回车”时,您可以使用event.preventDefault
:
类应用程序扩展了React.Component{
建造师(道具){
超级(道具);
this.state={text:'}
this.handleChange=this.handleChange.bind(this);
this.keypress=this.keypress.bind(this);
}
手变(活动){
this.setState({text:event.target.value});
}
按键(e){
如果(e.key=='Enter'){
e、 预防默认值();
这是我的国家({
发送消息:this.state.text,
文本:“”,
});
}
}
render(){
返回(
{JSON.stringify(this.state,null,2)}
);
}
}
ReactDOM.render(,document.getElementById('app'))代码>
假设此文本区域供用户留下评论。我会将我的文本区域放置在表单元素中,并使用渲染上方定义的handleSubmit
函数onSubmit
:
handleChange=(事件)=>{
this.setState({comment:event.target.value});
};
handleSubmit=(事件)=>{
event.preventDefault();
this.setState({注释:'});
};
render(){
返回(
添加评论
提交评论
);
}
注意,在handleSubmit
中,我添加了e.preventDefault()
,因为它是一个表单元素,HTML表单元素的默认行为是提交。然后,我添加了一个this.setState()
,其中包含一个带有注释属性和空字符串值的对象,以便可以清空文本区域。在您的情况下,可以将其称为{text:'}
注意,我还有一个带有{this.handleChange}
的onChange
事件处理程序handleChange
接收此事件
对象,您的文本
状态或在我的情况下注释
状态的新值将来自event.target.value
在您开发这个组件的过程中,我也会对它进行测试。因此,考虑一个测试,找到文本元素,模拟一个改变事件,提供一个假的事件对象,强制组件更新,然后断言文本区域确实改变了它的值。在这样的测试中,您需要手动设置事件.target.value
值。尝试添加返回false
在按键功能结束时点击。谢谢
handleChange = (event) => {
this.setState({ comment: event.target.value });
};
handleSubmit = (event) => {
event.preventDefault();
this.setState({ comment: '' });
};
render() {
return (
<form onSubmit={this.handleSubmit}>
<h4>Add a Comment</h4>
<textarea onChange={this.handleChange} value={this.state.comment} />
<div>
<button>Submit Comment</button>
</div>
</form>
);
}