我已经使用React Material UI实现了自定义自动完成功能,如下所示:
handleTextChange(e, key){
dataObject[key] = e.currentTarget.value;
//Call reducer to openAutoComplete
//Call reducer to update state of dataObject
}
handleTextOnBlur(e, key){
//Set the autocomplete to off since it's being used in a list of textFields
}
render(){
return (
<div>
{Object.keys(dataObject).map(function(key){
return (
<TextField
id={key}
defaultValue={dataObject[key] || ""}
onChange={(e)=>{this.handleTextChange(e, key)}}
onFocus={(e)=>{this.handleTextFocus(e, key)}}
onBlur={(e)=>{this.handleTextOnBlur(e, key)}}
/>
)
}, this);}
...
<Popper
anchorEl={this.props.autocomplete}
open={Boolean(this.props.autocomplete)}
>
{this.suggestions.map(function(s){
return (<ListItem onClick={this.makeSelection}> {suggesion.text} </ListItem>)
}, this)}
</Popper>
</div>
)
}
我面临的问题是,当我在建议列表中单击以进行选择时,关闭自动完成的onBlur
事件被触发。在建议列表中单击时如何防止onBlur
,但如果是常规onBlur
,如何保持默认的模糊行为?