Estoy usando Angular, Javascript y Typescript e Ionic. Tengo una función createDropdown(inputField, arrayOfItems) que adjuntará un menú desplegable al campo de entrada que se pasa y llenará el menú desplegable con la matriz proporcionada.
Esto funcionará como un menú desplegable de "autocompletar", es por eso que necesito agregar una "entrada" de escucha de eventos para que se vea así:
createDropdown(inputField, arrayOfItems){ inputField.addEventListener("input",()=>{ //Logic to create dropdown }); }
El problema es que, después de agregar el detector de eventos al campo de entrada, si el usuario envía spam a una tecla "A", por ejemplo, desde el teclado, esto crea un retraso o demora y, finalmente, la aplicación se bloquea. ¿Hay alguna manera de evitar que esto suceda? He intentado "keyup", y lo soluciona. Sin embargo, con esto, presionar cualquier tecla del teclado activará la función createDropdown, por ejemplo: presionar "Control" o "Alt".
El resultado final debe ser que el usuario escriba en un campo de entrada, luego los resultados que coinciden deben mostrarse en el menú desplegable para que el usuario pueda seleccionarlos. Cuanto más escriben, más precisos se vuelven los resultados.
Lo que está buscando se llama "entrada antirrebote". Echa un vistazo aquí: https://stackoverflow.com/a/36849347/4088472
Podría usar, por ejemplo, setTimeout() + implementación de un control giratorio.
Aquí un ejemplo de lo que quiero decir
https://stackblitz.com/edit/how-to-trigger-an-event-in-input-text-after-i-stop-typingwritin