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

288
Vistas
¿Cómo evitar que el menú desplegable de Bootstrap 4 se muestre al hacer clic en el elemento de entrada?

A continuación se muestra un menú desplegable de arranque simple, con la excepción de que el elemento de alternancia es una entrada de texto. No quiero que el menú desplegable se muestre en el evento de click , sino que quiero mostrarlo en la entrada del usuario, para poder llenar dinámicamente el menú en función de esa entrada.

El controlador de eventos de click a continuación evita que se muestre el menú desplegable antes de que el usuario haya ingresado algo en el elemento de entrada, y cuando hay alguna entrada, el controlador de input muestra el menú desplegable. Sin embargo, una vez que el usuario ha ingresado algo en el elemento, se muestra el menú desplegable. Posteriormente, cualquier click subsiguiente en el elemento de entrada muestra el menú desplegable y el controlador de click se ejecuta, pero no evita que se muestre el menú desplegable incluso si el usuario borra todas las entradas.

¿Adjunta Bootstrap algún evento nuevo o no entiendo muy bien los eventos? ¿Cómo podría hacer que esto funcione?

 $('#exampleFormControlInput1').on('click', e=>{ e.preventDefault(); e.stopPropagation(); console.log('Dropdown prevented'); }); $('#exampleFormControlInput1').on('input', e=>{ $('#exampleFormControlInput1').dropdown('show'); });
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script> <div class="container"> <div class="dropdown"> <label for="exampleFormControlInput1" class="form-label" id="dropdownMenuButton1">Input with autocomplete</label> <input type="text" class="form-control" id="exampleFormControlInput1" placeholder="Search for something" data-toggle="dropdown" aria-expanded="false"> <ul class="dropdown-menu" aria-labelledby="exampleFormControlInput1"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </div> </div>

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

0

No es necesario agregar nuevos controladores de clics. Use los eventos y métodos de Bootstrap en su lugar:https://getbootstrap.com/docs/4.6/components/dropdowns/#methods

Para evitar que el menú desplegable se abra cuando el campo de entrada está vacío, bloquee el evento show.bs.dropdown . Tenga en cuenta que:

Todos los eventos desplegables se activan en el .dropdown-menu y tienen una propiedad de relatedTarget relacionada, cuyo valor es el elemento ancla de alternancia.

Para mostrar la lista cuando aparecen datos en el campo y ocultarla cuando el campo queda vacío, puede usar el método .dropdown() .

https://codepen.io/glebkema/pen/RwZMNzE?editors=1011

 $(function() { // prevent the list from opening by clicking on an empty field $(".dropdown").on("show.bs.dropdown", function(e) { if (!e.relatedTarget.value) { return false; } }); // handle changes in the input field $("#exampleFormControlInput1").on("input", function(e) { if (this.value) { $(this).dropdown("show"); } else { $(this).dropdown("hide"); } }); });
 <div class="container"> <div class="dropdown"> <label for="exampleFormControlInput1" class="form-label" id="dropdownMenuButton1">Input with autocomplete</label> <input type="text" class="form-control" id="exampleFormControlInput1" placeholder="Search for something" data-toggle="dropdown" aria-expanded="false"> <ul class="dropdown-menu" aria-labelledby="exampleFormControlInput1"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </div> </div> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>

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