在 React js 中点击回车键触发 onblur 事件
Trigger onblur event on click of enter keypress in React js
我有一个输入文本字段。当用户输入任何文本并单击输入按钮时,我需要激活模糊事件以移除焦点并验证文本输入。
<input type="text"
style={{marginTop:'20%', marginLeft:'40%'}}
value={value}
onFocus={onFocus}
onChange={e => setValue(e.target.value)}
onKeyPress={handleKeyPress}
/>
而不是 onKeyPress
,使用检测 keyCode
事件的 onKeyDown
。
<input type="text"
style={{marginTop:'20%', marginLeft:'40%'}}
value={value}
onFocus={onFocus}
onChange={e => setValue(e.target.value)}
onKeyDown={(e) => this.handleKeyPress(event)}
/>
函数会像,
handleKeyPress(e){
if(e.keyCode === 13){
e.target.blur();
//Write you validation logic here
}
}
使用 refs
和 this.inputRef.current.blur()
。这是可行的解决方案。
class App extends React.Component {
constructor(props) {
super(props);
this.inputRef = React.createRef();
this.state = {
value: ""
};
}
keypressHandler = event => {
if (event.key === "Enter") {
this.setState({ value: this.inputRef.current.value });
this.inputRef.current.blur();
this.inputRef.current.value = "";
}
};
render() {
return (
<div>
<label>Enter Text</label>
<input
type="text"
ref={this.inputRef}
onKeyPress={event => this.keypressHandler(event)}
/>
<p>{this.state.value}</p>
</div>
);
}
}
ReactDOM.render(<App/>, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='root' />
我有一个输入文本字段。当用户输入任何文本并单击输入按钮时,我需要激活模糊事件以移除焦点并验证文本输入。
<input type="text"
style={{marginTop:'20%', marginLeft:'40%'}}
value={value}
onFocus={onFocus}
onChange={e => setValue(e.target.value)}
onKeyPress={handleKeyPress}
/>
而不是 onKeyPress
,使用检测 keyCode
事件的 onKeyDown
。
<input type="text"
style={{marginTop:'20%', marginLeft:'40%'}}
value={value}
onFocus={onFocus}
onChange={e => setValue(e.target.value)}
onKeyDown={(e) => this.handleKeyPress(event)}
/>
函数会像,
handleKeyPress(e){
if(e.keyCode === 13){
e.target.blur();
//Write you validation logic here
}
}
使用 refs
和 this.inputRef.current.blur()
。这是可行的解决方案。
class App extends React.Component {
constructor(props) {
super(props);
this.inputRef = React.createRef();
this.state = {
value: ""
};
}
keypressHandler = event => {
if (event.key === "Enter") {
this.setState({ value: this.inputRef.current.value });
this.inputRef.current.blur();
this.inputRef.current.value = "";
}
};
render() {
return (
<div>
<label>Enter Text</label>
<input
type="text"
ref={this.inputRef}
onKeyPress={event => this.keypressHandler(event)}
/>
<p>{this.state.value}</p>
</div>
);
}
}
ReactDOM.render(<App/>, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='root' />