Cargué un modal de arranque dinámico y contiene pocas entradas de texto. El problema al que me enfrento es que quiero que el cursor se enfoque en la primera entrada en este modal, y esto no sucede de forma predeterminada.
Así que escribí este código para hacerlo:
$('#modalContainer').on('show', function () {
$('input:text:visible:first').focus();
});
Pero ahora se enfoca en la entrada por un momento y luego desaparece automáticamente, ¿por qué sucede esto y cómo resolverlo?
jquery
twitter-bootstrap
Amr Elgarhy
fuente
fuente
setTimeout(function() { /* Your code */ }, 100);
Respuestas:
@scumah tiene la respuesta para usted: Twitter bootstrap - Concéntrese en el área de texto dentro de un modal al hacer clic
Para Bootstrap 2
Actualización: para Bootstrap 3
========== Actualizar ======
En respuesta a una pregunta, puede usar esto con múltiples modales en la misma página si especifica diferentes objetivos de datos, cambie el nombre de sus ID de modales para que coincidan y actualice los ID de los campos de entrada del formulario y, finalmente, actualice su JS para que coincida con estos nuevos ID:
consulte http://jsfiddle.net/panchroma/owtqhpzr/5/
HTML
JS
fuente
Encontré la mejor manera de hacer esto, sin jQuery.
funciona perfectamente.
Este es un atributo html5. Compatible con todos los principales navegadores.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
fuente
<input type="text" class="form-control" placeholder="" autofocus>
@Html.TextBoxFor(m => m.UserName, new { @autofocus="" })
tabdindex="-1"
de tu modal, sin embargo, solo funciona una vez. El cierre y la reapertura no se enfocan.La respuesta de David Taiaroa es correcta, pero no funciona porque el tiempo para "aparecer" en el modal no le permite establecer el enfoque en la entrada. Necesitas crear un retraso:
fuente
<input value="" autofocus>
y funcionó bien para mí esta vez, extrañoEl código habitual (a continuación) no me funciona:
Encontré la solución :
ver más aquí
fuente
Conseguí que bootstrap agregara la siguiente información en su página:
http://getbootstrap.com/javascript/#modals
fuente
Este es el código simple que funcionará mejor para usted en todas las ventanas emergentes que tengan cualquier campo de entrada con el enfoque
fuente
Creo que la respuesta más correcta, asumiendo el uso de jQuery, es una consolidación de aspectos de todas las respuestas en esta página, más el uso del evento que pasa Bootstrap:
También trabajaría cambiar
$(document)
a$('.modal')
o para agregar una clase a la modal que las señales que deben producirse este enfoque, al igual$('.modal.focus-on-first-input')
fuente
prueba este código, podría funcionar para ti
fuente
$(this).find('input:text').first().focus()
El primer paso, debe establecer su
autofocus
atributo en la entrada del formulario.Y luego debe agregar una declaración para establecer el enfoque automático de su entrada después de que se muestre su modal.
Prueba este código:
fuente
Si solo desea enfocar automáticamente cualquier modal que estaba abierto, puede colocar sus patrones o funciones de biblioteca en este fragmento que se enfocará en la primera entrada:
fuente
Si está buscando un fragmento que funcione para todos sus modales y busque automáticamente el primer texto de entrada en el abierto, debe usar esto:
Si su modal se carga usando ajax, use esto en su lugar:
fuente
esta es la solución más general
fuente
Intente eliminar la propiedad tabIndex del modal , cuando su input / textbox esté abierto. Vuelva a configurarlo como antes , cuando cierre la entrada / cuadro de texto. Esto resolvería el problema independientemente de la versión de arranque y sin comprometer el flujo de experiencia del usuario .
fuente
Según los documentos de Bootstrap 4:
P.ej:
Enlace .
fuente
Utilice el enfoque automático para buscar el elemento de formulario correcto:
fuente
Es "#button" el que llama a la forma modal,
"#mimodal" es la forma modal,
"#myinput" es la entrada que desea enfocar
fuente