Estoy tratando de implementar una función de rebote personalizada que debe alertar cualquier dato que el usuario haya ingresado en un cuadro de texto después de un segundo de retraso (después de que el usuario haya dejado de escribir). ¿Qué estoy haciendo mal? Activa la alerta () inmediatamente con un solo carácter.
function debounce(func, timeout) { let timer; return (...args) => { clearTimeout(timer); timer = setTimeout(() => { func.apply(this, args); }, timeout); }; } function saveInput(args) { alert(args); //This triggers immediately } const processChange = (event) => { debounce(saveInput(event.target.value), 1000); } <input type="text" onkeyup="processChange(event)" />¿Pueden sugerir si me pierdo algo aquí?
Esto ha funcionado para mí. Sin embargo, myInput es una variable global aquí.
function debounce(callback, delay) { let timeout; return function () { clearTimeout(timeout); timeout = setTimeout(callback, delay); } } const myInput = document.getElementById("myInput"); function helloInput() { alert(myInput.value); } myInput.addEventListener( "keyup", debounce(helloInput, 1000) ); myInput.focus(); <input type="text" id="myInput" />