Tengo una lista desplegable de selección y 2 campos de entrada. Sé cómo establecer el foco en el primer campo de entrada para CUALQUIER modal usando:
$('.modal').on('shown.bs.modal', function () { $(this).find('input:text:visible:first').focus(); })https://www.w3schools.com/code/tryit.asp?filename=FDG195P90CWU
Pero no puedo ver cómo hacerlo cuando hay listas desplegables y campos de entrada.
Creo que podrías estar buscando algo como esto: $("select:first").focus();
Aquí está el código JQuery:
$(document).ready(function(){ $("#myBtn").click(function(){ $("#myModal").modal(); }); $('.modal').on('shown.bs.modal', function () { //$(this).find('input:text:visible:first').focus(); $("select:first").focus(); }) });Cuando lo ejecuta, puede ver que el cuadro de selección está resaltado en azul (al menos en Chrome). Encontré esta respuesta basada en una pregunta similar . Espero que ayude
EDITAR :
Si desea que seleccione el primer texto o seleccione el campo, puede usar:
$(this).find('input[type=text],textarea,select').filter(':visible:first').focus(); Si lo necesita para buscar campos de entrada adicionales (como password o radio button ), deberá agregarlos en la lista de find . Otra pregunta similar hecha aquí .
Aquí está mi solución desarrollada además por @craztmatt y otros. Me he extendido para que la selección del elemento de destino comience en el modal que activó el evento.
// do this to make bootstrap modals auto-focus. // delegate to body so that we only have to set it up once. $('body').on('shown.bs.modal', function (e) { var ele = $(e.target).find('input[type=text],textarea,select').filter(':visible:first'); // find the first input on the bs modal if (ele) {ele.focus();} // if we found one then set focus. })