Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!