El problema es bastante sencillo, aunque estoy teniendo dificultades para averiguar cómo resolverlo.
Estoy usando un selector de fecha jQuery-ui junto con un "interruptor de encendido / apagado de estilo ios" personalizado. Esta palanca utiliza algunos elementos absolutamente posicionados que actualmente se muestran en la parte superior de mi selector de fechas.
vea el círculo feo que cubre el 6 de julio a continuación ...
la forma sucia de hacer esto (al menos en mi opinión) es escribir un estilo en una de mis hojas de estilo, pero prefiero usar algo de javascript cuando se inicia el selector para hacer esto.
Ya lo intenté
$('.date_field').datepicker();
$('.date_field').datepicker("widget").css({"z-index":100});
y
$('.date_field').datepicker({
beforeShow: function(input, inst) {
inst.dpDiv.css({"z-index":100});
}
});
pero parece que el índice z se sobrescribe cada vez que se inicia el selector de fecha.
¡Se agradece cualquier ayuda!
javascript
jquery
css
jquery-ui
datepicker
Greg Guida
fuente
fuente
style
etiqueta al encabezado; no solo tenerla en CSS mantiene su código JS más corto y limpio, sino que también se aplica a todas las instancias de selector de fechas sin problemas.style
etiqueta en la cabeza está un poco más cerca de lo que estoy buscando, pero lo que realmente quiero hacer es cambiar el atributo de estilo en el elemento selector de fecha.=]
Respuestas:
Su código JS en la pregunta no funciona porque jQuery restablece el
style
atributo del widget datepicker cada vez que lo llama.Una forma fácil de anular
style
la suyaz-index
es con una!important
regla CSS como ya se mencionó en otra respuesta . Sin embargo, otra respuesta sugiere la configuraciónposition: relative;
yz-index
en el elemento de entrada en sí, que se copiará automáticamente en el widget Datepicker.Pero, según lo solicitado, si por alguna razón realmente necesita configurarlo dinámicamente, agregando más código y procesamiento innecesarios a su página, puede intentar esto:
$('.date_field').datepicker({ //comment the beforeShow handler if you want to see the ugly overlay beforeShow: function() { setTimeout(function(){ $('.ui-datepicker').css('z-index', 99999999999999); }, 0); } });
Violín
z-index
Creé un objeto de función diferida para configurar el widget, después de que jQuery UI lo reinicia, cada vez que lo llamas. Debería ser suficiente para sus necesidades.El truco de CSS es mucho menos feo en mi opinión, reservo un espacio en mi CSS solo para los ajustes de jQuery UI (que está justo encima de los ajustes de IE6 en mis páginas).
fuente
;)
z-index
en la entrada DOM. Eso fue lo único que funcionó para mí:<input .... style="z-index: 9999;"/>
Hay una forma más elegante de hacerlo. Agregue este CSS:
.date_field {position: relative; z-index:100;}
jQuery establecerá el calendario
z-index
en 101 (uno más que el elemento correspondiente). Elposition
campo debe serabsolute
,relative
ofixed
. jQuery busca el padre del primer elemento, que es absoluto / relativo / fijo, y toma su 'z-index
fuente
Necesita usar una
!important
cláusula para forzar elz-index
valor en línea usando CSS..ui-datepicker{z-index: 99 !important};
fuente
Esto funcionó para mí cuando estaba tratando de usar datepicker junto con un modal de arranque:
$('input[id^="txtDate"]').datepicker(); $('input[id^="txtDate"]').on('focus', function (e) { e.preventDefault(); $(this).datepicker('show'); $(this).datepicker('widget').css('z-index', 1051); });
Por supuesto, cambie el selector para adaptarlo a sus propias necesidades. Establecí el "índice z" en 1051 porque el índice z para el modal de arranque se estableció en 1050.
fuente
Para obtener un índice z de 100. Necesita una entrada con
z-index:99;
y JQueryUI actualizará el selector de fechas para que seaz-index:100
<input style="z-index:99;">
o<input class="high-z-index">
y css.high-z-index { z-index: 99; }
También puede especificar el índice z para heredar, que debería heredar de su cuadro de diálogo y hacer que jQueryUI detecte correctamente el índice z.
<input style="z-index:inherit;">
o<input class="inhert-z-index">
y css.inherit-z-index { z-index: inherit; }
fuente
La MEJOR forma NATURAL es simplemente poner el elemento selector de fecha en una "plataforma" que tiene una posición "relativa" y tiene un "índice z" más alto que el elemento que aparece por encima de su control ...
fuente
BEST NATURAL way
En mi caso nada funcionó. Necesitaba agregar el índice z al tipo de entrada que tiene el selector de fecha.
<input type="text" class="datepicker form-control" datatype="date" style="z-index: 10000;" id="txtModalDate">
fuente
Esto es para Bootstrap datetimepicker
Si su selector de fechas se oculta debido a que aparece un desplazamiento en su div, use:
overflow-x: visible !important; overflow-y: visible !important;
en CSS de todo el div que contiene su selector de fecha y otro elemento como
.dialogModel{ overflow-x: visible !important; overflow-y: visible !important; }
fuente