Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
jQuery autocompletar + ajax API solo activa la lista en la barra espaciadora/flecha hacia abajo?

Estoy haciendo una solicitud Ajax a una API de búsqueda de música, utilizando la función de autocompletar de jQuery. La llamada funciona muy bien, pero creo que tengo que hacer algunos ajustes/mejoras de Ajax. La función de autocompletar parece funcionar muy bien cada vez que se hace clic en la barra espaciadora, ¿lo cual es bastante extraño?

Si escribo las letras "perder", obtengo la salida de la lista de canciones completa en mi consola, pero el cuadro de sugerencias desplegable no aparece, a menos que presione la barra espaciadora o presione la flecha hacia abajo en mi teclado.

 function songSelection() { $(".song-input").each(function () { let input = $(this); if (input.next() == 'SongSelector') { let timer; input.on('keydown', function () { timer = setTimeout(doneTyping, 300); }); function doneTyping() { let songSearch = input.val() $.ajax({ url: `https://deezerdevs-deezer.p.rapidapi.com/searchq=${songSearch}`, method: "GET", headers: { "x-rapidapi-host": "deezerdevs-deezer.p.rapidapi.com", "x-rapidapi-key": "APIkeyhere" }, success: function (data) { let songList = [] for (let item in data.data) { songList.push(data.data[item].song) } $('.song-input').autocomplete({ source: songList, }) }, }) } } }); }

¿Me estoy perdiendo algo en la solicitud de Ajax? Me parece una funcionalidad bastante extraña que las sugerencias desplegables de autocompletar parecen realmente solo querer funcionar cuando se presiona la barra espaciadora o la tecla de flecha hacia abajo después de escribir.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Considera lo siguiente.

 $(function() { $(".song-input").autocomplete({ delay: 300, source: function(request, response) { var songSearch = request.term; var songList = []; $.ajax({ url: "https://deezerdevs-deezer.p.rapidapi.com/", data: { searchq: songSearch }, method: "GET", headers: { "x-rapidapi-host": "deezerdevs-deezer.p.rapidapi.com", "x-rapidapi-key": "APIkeyhere" }, success: function(data) { $.each(data.data, function(key, value) { songList.push(value.song); }); response(songList); }, }) } }); });
 <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <link rel="stylesheet" href="/resources/demos/style.css"> <script src="https://code.jquery.com/jquery-3.5.1.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <div> Search: <input type="text" class="song-input"> </div>

Esto asignará Autocompletar a todos los Elementos con song-input clase. Cuando el usuario ingresa un término de búsqueda, request.term , se pasará a la API y los resultados se formatearán en una matriz. Esa matriz se pasará a response() .

Ver más: https://api.jqueryui.com/autocomplete/#option-source

about 4 years ago · Juan Pablo Isaza Denunciar

0

Está configurando repetidamente temporizadores que en realidad no eliminan el rebote de la escritura. Por lo tanto, el comportamiento de su función de escritura finalizada no es detectar realmente cuándo alguien ha terminado de escribir.

Consulte esta respuesta para obtener más información: https://stackoverflow.com/a/57763036/637283

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda