사용자가 처음 세 문자를 입력하면 텍스트 상자에 채우기 위해 자동 완성 옵션 목록을 드롭 다운하는 텍스트 상자가 있습니다. 자동 완성 옵션 중 하나를 클릭하면 텍스트 상자를 지우고 싶습니다. 그 요소가 지금과 같은 모습입니다 :Jquery 또는 요소를 하드 코딩하지 않고 텍스트 상자를 지움
<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.log'this.userInput' 할 수 있고 그것이 존재하고'undefined'가 아닌지 확인하십시오? 인라인 참조를 수행하는 대신 ref 콜백을 사용해야 할 수도 있습니다. –
@ChaseDeAnda'this.userInput'을 기록했으며'' –
함수를 호출하고 있습니까? 코드가 정상적으로 보입니다. –