Dans le filtrage par Javascript, comment obtenir un événement après que la valeur d'un élément <input>
a changé à cause d'un texte traîné et déposé dans le champ?Afficher l'événement de modification de valeur dans l'élément d'entrée
input.addEventListener("change", cb); // Is not triggered on drop
input.addEventListener("drop", cb); // Is triggered before the value change
Un extrait pour démontrer le problème:
let input = document.getElementById('input');
let button = document.getElementById('button');
let div = document.getElementById('div');
function log(msg) {
\t let el = document.createElement('pre');
\t el.textContent = msg;
\t div.appendChild(el);
}
input.addEventListener("change", function() {
\t log("CHANGE: " + input.value);
});
input.addEventListener("keyup", function() {
\t log("KEYUP: " + input.value);
});
input.addEventListener("drop", function() {
\t log("DROP: " + input.value);
});
button.addEventListener("click", function() {
\t log("CLICK: " + input.value);
});
log("Try dragging text into the input field");
<input id="input"></input>
<button id="button">Click</button>
<div id="div"></div>
J'ai trouvé une solution de contournement qui fonctionne au moins dans Chrome: déclencher un 'setTimeout (cb, 0)' sur * drop * avant de lire la valeur. – ANisus
J'ai essayé votre solution de contournement en utilisant setTimeout et il fonctionne également dans Firefox –