J'ai une zone de texte qui déroulera une liste d'options de saisie semi-automatique pour remplir la zone de texte une fois que l'utilisateur entre les trois premiers caractères. En cliquant sur l'une des options de saisie semi-automatique, je veux que la zone de texte s'efface automatiquement. Voici à quoi ressemble cet élément:Effacer la zone de texte sans Jquery ou coder en dur un élément
<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>
J'utilise React. Voici ce que mon code pour effacer la zone de texte ressemble actuellement:
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)
);
}
D'abord et avant tout je dois supprimer la ligne Jquery qui dégageait effectivement la case à cocher. J'ai trouvé que le remplacer par this.userInput.value=""
n'avait aucun effet et event.target.value=""
non plus. Deuxièmement, je voudrais supprimer la ligne Jquery $('#userFilterTypeahead').on( 'selectitem.uk.autocomplete',...
mais je dois encore déclencher mon effacement de texte lorsque l'événement selectitem.uk.autocomplete
se produit. Donc, je voudrais remplacer ce Jquery et je suis déconcertée par la complexité qui vient avec l'effacement d'une seule zone de texte.
'this.userInput.value = ''' aurait dû fonctionner. Pouvez-vous console.log 'this.userInput' et assurez-vous qu'il existe et n'est pas' undefined'? Vous devrez peut-être utiliser un rappel de référence au lieu de faire une référence en ligne. –
@ChaseDeAnda J'ai enregistré 'this.userInput' et j'ai obtenu' ' –
Etes-vous sûr que cette fonction est appelée? Votre code semble bien. –