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

221
Vistas
Using up/down keys to select list item JS/jQuery

I have a list of items that get populated dynamically based on search terms. I want the list items to be selectable/focused when using the up/down keys and ESC to hide the dropdown.

<form>
  <div>
    <div class="field">
      <input type="text" id="dropdown_input" name="query">
    </div>
    
    <!-- dropdown_results inserted into DOM dynamically from search query -->
    <div id="dropdown_results">
      <ul id="dropdown_results_ul">
        <li>
          <a href="/example1">example1</a>
        </li>
        <li>
          <a href="/example2">example2</a>
        </li>
        <li>
          <a href="/example3">example3</a>
        </li>
      </ul>
    </div>
  </div>
</form>

<script>
    if (e.keyCode == 40) {
      jQuery("a:focus").parent().next().find("a").focus();
    }
    if (e.keyCode == 38) {
      jQuery("a:focus").parent().prev().find("a").focus();
    
    }
</script>

I would ideally like to do this using Bootstrap5, as that has native up/down/ESC support for button dropdowns, but I cant work out how to use that with li items when the parent ul is inserted into the DOM.

JSFiddle Example: https://jsfiddle.net/eupy9Lsc/1/

JSFiddle Bootstrap Example: https://jsfiddle.net/jr52tomd/

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

0

Your javascript isn't listening to any key events. You can resolve this with something like...

jQuery(document).on('keydown', function(e) {
  if (e.keyCode == 40) {
    jQuery("a:focus").parent().next().find("a").focus();
  }
  if (e.keyCode == 38) {
    jQuery("a:focus").parent().prev().find("a").focus();

  }
});
about 4 years ago · Juan Pablo Isaza Denunciar

0

fixed this using 2 listeners:

jQuery("#dropdown_input").on('keydown', function(e) {
  if (e.keyCode == 40) {
    jQuery("#dropdown_results").find('a:first').focus();
  }
});


jQuery("#dropdown_results").on('keydown', function(e) {
  if (e.keyCode == 40) {
    jQuery("a:focus").parent().next().find("a").focus();
  }
  if (e.keyCode == 38) {
    jQuery("a:focus").parent().prev().find("a").focus();

  }
});
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