Cuando uso un select2 (input) en el modo de arranque, no puedo escribir nada en él. Es como deshabilitado? Fuera del modal select2 funciona bien.
Ejemplo de trabajo: http://jsfiddle.net/byJy8/1/ code:
<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Panel</h3>
</div>
<div class="modal-body" style="max-height: 800px">
<form class="form-horizontal">
<!-- Text input-->
<div class="control-group">
<label class="control-label" for="vdn_number">Numer</label>
<div class="controls">
<!-- seleect2 -->
<input name="vdn_number" type="hidden" id="vdn_number" class="input-large" required="" />
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
y js:
$("#vdn_number").select2({
placeholder: "00000",
minimumInputLength: 2,
ajax: {
url: "getAjaxData/",
dataType: 'json',
type: "POST",
data: function (term, page) {
return {
q: term, // search term
col: 'vdn'
};
},
results: function (data) { // parse the results into the format expected by Select2.
// since we are using custom formatting functions we do not need to alter remote JSON data
return {results: data};
}
}
});
respuestas:
aquí puedes encontrar una solución rápida
y aquí está "la forma correcta": Select2 no funciona cuando está incrustado en un modo de arranque
dropdownParent
no debería estar en el div raíz, sino más profundo, por ejemplo, el div con clasemodal-content
, de lo contrario, las posiciones desplegables se confunden al desplazar el modal.Respuestas:
Ok, lo tengo para trabajar.
cambio
a
(eliminar tabindex = "- 1" de modal)
fuente
Para Select2 v4:
Use
dropdownParent
para adjuntar el menú desplegable al cuadro de diálogo modal, en lugar del cuerpo HTML.Esto adjuntará el menú desplegable Select2 para que caiga dentro del DOM del modal en lugar del cuerpo HTML (el valor predeterminado). Ver https://select2.org/dropdown#dropdown-placement
fuente
dropdownParent: $("#myModal")
, nodropdownParent: "#myModal"
.dropdownParent
raíz del modal, de hecho, es mejor elegir el cuerpo, de lo contrario, obtendrá errores de posicionamiento realmente malos al desplazarse. ¡Puse el mío en el div con clasemodal-content
y funciona de maravilla!Encontré una solución a esto en github para select2
https://github.com/ivaynberg/select2/issues/1436
Para bootstrap 3, la solución es:
Bootstrap 4 renombró el
enforceFocus
método a_enforceFocus
, por lo que deberá parchear eso en su lugar:Explicación copiada del enlace de arriba:
fuente
$.fn.modal.Constructor.prototype.enforceFocus = $.noop;
Simplemente elimine
tabindex="-1"
y agregue estilooverflow:hidden
Aquí hay un ejemplo:
fuente
Esta es mi solución con select2 4.0.0. Simplemente anule el CSS justo debajo de la importación select2.css. Asegúrese de que el índice z sea mayor que su diálogo o modal. Acabo de agregar 2000 en los predeterminados. Porque el índice z de mis cuadros de diálogo es de aproximadamente 1000.
fuente
bootstrap.css
el índice z de.popover
se establece en 1060, por lo que esta solución también funciona. Me gusta porque es simple y resuelve el problema de la misma manera que se creó: el índice z establecido en una hoja de estilo.Establecer el menú desplegable Tuve que configurarlo en .modal-content dentro del modal o el texto terminaría centrado.
fuente
.modal-content
realmente hacer una diferencia. Gracias por señalar 👍La respuesta que funcionó para mí se encuentra aquí: https://github.com/select2/select2-bootstrap-theme/issues/41
Tampoco requiere eliminar el
tabindex
.fuente
Según la documentación oficial de select2, este problema se produce porque los modales de Bootstrap tienden a robar el foco de otros elementos fuera del modal.
Por defecto, Select2 adjunta el menú desplegable al elemento y se considera "fuera del modal".
En su lugar, adjunte el menú desplegable al modal en sí con la configuración desplegable Padres:
Ver referencia: https://select2.org/troubleshooting/common-problems
fuente
Tuve el mismo problema, actualizar
z-index
para.select2-container
debería hacer el truco. Asegúrese de que su modalz-index
sea más bajo que select2.Actualizado: en caso de que el código anterior no funcione correctamente, también elimine los índices de tabulación de su modal como sugirió @breq
fuente
Simplemente use este código en Document.read ()
fuente
Este problema no funcionaba para mí Función Jquery simple
fuente
cambiar el archivo select2.css
a
fuente
Solo para comprender mejor cómo funcionan los elementos tabindex para completar la respuesta aceptada:
de: Red Mozilla Devlopper
fuente
Si tiene un problema con el teclado del iPad que oculta el modo de arranque al hacer clic en la entrada select2 , puede resolver esto agregando la siguiente regla después de la inicialización de la
select2
entrada:Tomado de https://github.com/angular-ui/bootstrap/issues/1812#issuecomment-135119475
EDITAR: si sus opciones no se muestran correctamente, debe usar el
dropdownParent
atributo al inicializarselect2
:Buena suerte (:
fuente
Basado en la respuesta de @pymarco, escribí esta solución, no es perfecta, pero resuelve el problema de enfoque select2 y mantiene la secuencia de pestañas trabajando dentro del modal
fuente
En mi caso tuve el mismo problema con dos modales y todo se resolvió usando:
Como en el problema del proyecto # 41, dijo un usuario.
fuente
Este código está funcionando. Gracias.
fuente
Bien, sé que llego tarde a la fiesta. Pero déjame compartir contigo lo que funcionó para mí. Las soluciones tabindex y z-index no me funcionaron.
La configuración del elemento primario del elemento select funcionó según los problemas comunes enumerados en el sitio select2.
fuente
Si usa jquery mobile popup, debe reescribir la función _handleDocumentFocusIn:
fuente
Tengo el mismo problema con el
select2
inbootstrap modal
, y la solución fue eliminar eloverflow-y: auto;
yoverflow: hidden
; desde.modal-open
y.modal classes
Aquí está el ejemplo del uso
jQuery
para eliminar eloverflow-y
:fuente
tuve este problema antes, estoy usando yii2 y lo resolví de esta manera
fuente
Tuve un problema semi relacionado en una aplicación, así que pondré mi 2c.
Tengo múltiples modales con formularios que contienen widgets select2. Abrir el modal A, luego otro modal dentro del modal A, provocaría que los widgets select2 dentro del modal B desaparezcan y no se inicialicen.
Cada uno de estos modales estaba cargando los formularios a través de ajax.
La solución fue eliminar los formularios del dom al cerrar un modal.
fuente
fuente
select2
Resolví esto en general en mi proyecto sobrecargando la función. Ahora comprobará si no hay dropdownParent y si se llama a la función en un elemento que tiene un padre del tipodiv.modal
. Si es así, agregará ese modal como padre para el menú desplegable.De esta manera, no tiene que especificarlo cada vez que crea un cuadro de entrada select2.
fuente
Simplemente lo hago funcionar incluyendo select2.min.css
Pruébalo
Mi html modal de bootstrap 3 es
fuente
puede llamar al disparador select2 nuevamente dentro de su $ (documento)
fuente
para usar bootstrap 4.0 con el lado del servidor (datos en línea ajax o json), debe agregar todo esto:
y luego, cuando modal esté abierto, cree select2:
fuente
En mi caso hice esto y funciona. Uso el paquete para cargarlo y en este caso funcionó para mí
fuente