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

115
Vistas
mi función en jquery no funciona correctamente pero está bien en JS simple

este código es para la búsqueda de autocompletar

El tema en el que se hizo clic no se muestra en search-input-box

 $(function () { let s = ["aa", "abb", "acc", "adf"], search = document.querySelector(".search"), inputBox = document.querySelector(".search-input input"), suggBox = document.querySelector(".suggBox"); inputBox.onkeyup = (e) => { let userData = e.target.value; let A = []; if (userData) { A = s.filter((d) => { return d.toLocaleLowerCase().startsWith(userData.toLocaleLowerCase()); }); A = A.map((d) => { return (d = `<li onclick="select(this)">${d}</li>`); }); search.classList.add("active"); show(A); } }; function show(e) { suggBox.innerHTML = !e.length ? `<li>` + inputBox.value + `</li>` : e.join(""); } function select(e) { inputBox.value = e.textContent; } });

si elimino $(function(){ ....}) entonces select(e) funcionando bien

NOTA : el código anterior es parte de un archivo jQuery largo, por eso necesito una solución en Jquery

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

0

es porque select(e) está dentro de la función anónima por lo que se puede acceder, debe crear el elemento usando document.createElement("li") y adjuntar el oyente o simplemente agregar el oyente de clic al documento y verificar si el objetivo es el elemento que querías

 document.body.onclick = function(e) { if (e.target.className == 'item') inputBox.value = e.target.textContent }

manifestación

 $(function() { let s = ["aa", "abb", "acc", "adf"], search = document.querySelector(".search"), inputBox = document.querySelector(".search-input input"), suggBox = document.querySelector(".suggBox"); inputBox.onkeyup = (e) => { let userData = e.target.value; let A = []; if (userData) { A = s.filter((d) => { return d.toLocaleLowerCase().startsWith(userData.toLocaleLowerCase()); }); A = A.map((d) => { // return (d = `<li onclick="select(this)">${d}</li>`); // replace this return (d = `<li class="item">${d}</li>`); }); search.classList.add("active"); show(A); } }; function show(e) { suggBox.innerHTML = !e.length ? `<li>` + inputBox.value + `</li>` : e.join(""); } /*function select(e) { inputBox.value = e.textContent; }*/ $(document).on('click', '.item', function(){ inputBox.value = this.textContent; }) });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="search-input"> <input type="text"> </div> <div class="search"></div> <div class="suggBox"></div>

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