【发布时间】:2018-03-31 22:49:51
【问题描述】:
我有一个文本框,一旦用户输入前三个字符,它就会下拉自动完成选项列表以填充文本框。单击其中一个自动完成选项后,我希望文本框自行清除。这是该元素现在的样子:
<label
className="searchSecondary_userFilterFacet"
hidden={!this.state.isExpanded}
>
<div
className="data-uk-autocomplete"
id="userFilterTypeahead"
ref={elem => (this.userFilterTypeahead = elem)}
>
<input
id="textInput_userSearch"
onKeyUp={this._handleNewUser}
placeholder="Search Users"
type="text"
ref={input => (this.userInput = input)}
/>
</div>
{userModifiers}
</label>
我正在使用 React。这是我清除文本框的代码目前的样子:
componentDidMount() {
let element = ReactDOM.findDOMNode(this.userFilterTypeahead);
//bind selection event for user filter autocompletion uikit
$('#userFilterTypeahead').on(
'selectitem.uk.autocomplete',
function(event, data, acobject) {
$('#textInput_userSearch').val('');
this._editUsersBuffer(data.value, true, true);
}.bind(this)
);
}
首先,我需要删除实际清除复选框的 Jquery 行。我发现用this.userInput.value="" 替换它没有效果,event.target.value="" 也没有。其次,我想删除 Jquery 行 $('#userFilterTypeahead').on(
'selectitem.uk.autocomplete',... 但我仍然需要在 selectitem.uk.autocomplete 事件发生时触发我的文本清除。所以,我想替换这个 Jquery,并且对清除单个文本框带来的复杂性感到困惑。
【问题讨论】:
-
this.userInput.value = ''应该有效。您能否 console.logthis.userInput并确保它存在而不是undefined?您可能需要使用 ref 回调而不是执行内联 ref。 -
@ChaseDeAnda 我登录了
this.userInput并得到了<input type="text" id="textInput_userSearch" placeholder="Search Users" autocomplete="off"> -
您确定正在调用该函数吗?您的代码看起来不错。
-
当然可以肯定它被调用了,因为我所做的只是将
$('#textInput_userSearch').val('');替换为this.userInput.value = ''然后下一行放入console.log并打印
标签: jquery html reactjs textbox