Problème avec les plugins jQuery Dialog et Datepicker

j'ai un dialogue, et j'ai un champ de curseur de données sur le dialogue.

Quand j'ouvre la boîte de dialogue et cliquez sur le datepicker de terrain, le datepicker spectacle panneau derrière dialogue.

j'essaie plus de propriétés: zindex, stack, bgiframe, mais pas de succès.

Quelqu'un peut m'aider?

Tks.

53
demandé sur Renato Bezerra 2009-04-04 00:47:31

12 réponses

Vieille Réponse

z-index (notez le trait d'union!) est la propriété des questions. Assurez-vous qu'il plus grand que le dialogue, et assurez-vous de le mettre sur le bon élément. Voici comment nous faisons:

#ui-datepicker-div 
{
 z-index: 1000; /* must be > than popup editor (950) */
}

API Changement - 17 avril 2010

dans le fichier CSS pour le cueilleur de date, trouvez l'article .ui-datepicker et changez-le:

.ui-datepicker { width: 17em; padding: .2em .2em 0; z-index: 9999 !important; }

utilisant z-index: 9999 !important; travaillé dans Firefox 3.5.9 (Kubuntu).

78
répondu Craig Stuntz 2010-05-17 07:26:46

pour jquery-ui-1.8

<style type="text/css">
    .ui-datepicker
    {
        z-index: 1003 !important; /* must be > than popup editor (1002) */
    }
</style>

l'important est nécessaire puisque le curseur de données a un élément.style qui Place z-index à 1.

17
répondu Jonatan Littke 2010-04-13 15:11:33

cela a fonctionné pour moi:

.ui-datepicker {
        z-index: 9999 !important;
    }
6
répondu Harmeet Singh 2012-06-29 13:15:38

place le style suivant à l'élément de texte "input": "position: relative; z-index: 100000;".

le datapicker div prend l'index z de l'entrée, mais cela ne fonctionne que si la position est relative.

de cette façon, vous n'avez pas à modifier le javascript de jQuery UI.

2
répondu Ronye Vernaes 2012-01-02 19:58:00

à partir de la version 1.7.2 de L'UI-datepicker-div n'est plus un élément CSS valide. "ui-datepicker" semble être l'enveloppeur le plus externe et le réglage de l'index-z à 99999 fonctionne correctement pour moi autant que je sache

1
répondu 2009-06-10 21:06:12

pour jquery-ui-1.7.2

<style type="text/css">
    .ui-datepicker
    {
        z-index: 1003; /* must be > than popup editor (1002) */
    }
</style>
1
répondu yasirmturk 2009-08-25 06:48:09

mettez ceci en haut de votre page. Il fonctionnera très bien:

<style type="text/css">
.ui-datepicker {z-index:10100;}
</style>
1
répondu Revathi 2010-06-07 11:02:03

j'ai eu de travail en appelant

$("#ui-datepicker-div").css("z-index", "1003" );
1
répondu Indra 2010-06-07 11:02:36

je suis choqué que:

a) personne ici n'a mentionné une solution programmatique pour définir le z-Index du curseur de données b) il n'y a pas d'option pour le DatePicker de jQuery de passer un Index-z lorsqu'il se lie à un élément.

j'utilise une méthode js pour calculer l'indice le plus élevé. Nous ne vérifions par défaut que les divs, parce que ce sont les éléments susceptibles d'obtenir une valeur de l'index-z et est naturellement plus rapide que l'analyse de chaque élément sur la page.

/* Get the highest zindex for elements on the page
*/
function getHighestZIndex(element){
    var index_highest = 0;
    var index_current;
    if(element == undefined){
        element = 'div';
    }
    $(element).each(function(){
        index_current = parseInt($(this).css("z-index"), 10);
        if(index_current > index_highest) {
            index_highest = index_current;
        }
    });
    return index_highest;
}

parce que nous devons utiliser javascript pour lier le curseur de données à un élément, i.e. $('#some_element').datepicker (), à ce moment-là, nous avons défini le style de l'élément cible de sorte que datepicker récupérera l'index-z de celui-ci. Merci à Ronye Vernaes (dans sa réponse sur cette page) pour avoir fait remarquer que datepicker () récupérera l'Index z de l'élément cible s'il en a un et est réglé à la position: relative:

$(this.target).datepicker();
var zindex = e.getHighestZIndex();
zindex++;
$(this.target).css('position','relative');
$(this.target).css('z-index',zindex);

this.la cible est de l'entrée l'élément que nous faisons dans un datepicker champ. Au moment de la reliure, nous obtenons l'index z le plus élevé de la page et nous faisons l'index z de l'élément un plus élevé. Lorsque l'icône du cliqueur de données est cliquée, il va prendre cet index-z de l'élément d'entrée, parce que, comme Ronye Vernaes mentionné, de la position de style: relative.

dans cette solution, nous n'essayons pas de deviner quelle sera la valeur la plus élevée de l'indice z. Nous avons en fait.

1
répondu Zac Imboden 2012-12-13 20:33:35

le dialogue est rendu dans une iframe, et est rendu en plus de tout le reste (y compris les dropdowns). Pendant ce temps, le curseur de données est rendu en HTML normal et positionné de manière absolue.

on dirait que le curseur de données est rendu absolument relatif à la page mère au lieu de l'iframe. Avez-vous essayé de placer le calendrier à l'intérieur de la boîte de dialogue comme un blog standard, non-absolu-positionné? Ou vous pourriez utiliser des chutes à la place.

0
répondu Mike Robinson 2009-04-03 20:58:05

Solution à la version 1.8.3 de jQuery datepicker, pour changer la valeur de l'indice z, il n'est pas impossible de changer via css.

celui-ci fonctionne bien:

jQuery('.ui-datepicker-trigger').click(function() {
        setTimeout(function() {
            jQuery('#ui-datepicker-div').css('z-index', 999);
        }, 500)
    });
0
répondu ignas 2012-03-01 14:48:04

le curseur de données positionne maintenant l'index z popup à un de plus que son champ associé, pour le garder devant ce champ, même si ce champ est lui-même dans une boîte de dialogue popup. Par défaut, le z-index est 0, donc datepicker finit par 1. Y a-t-il un cas où cela ne montre pas correctement le curseur de données? JQuery Post Sur Le Forum

pour obtenir un indice z de 100. Vous avez besoin d'une entrée avec z-index:99; et JQueryUI mettra à jour le curseur de données doit être z-index:100

<input style="z-index:99;"> ou <input class="high-z-index"> et css .high-z-index { z-index: 99; }

vous pouvez également spécifier le Z-index à hériter qui devrait hériter de votre boîte de dialogue et faire jQueryUI pour détecter correctement le z-index.

<input style="z-index:inherit;"> ou <input class="inhert-z-index"> et css .inherit-z-index { z-index: inherit; }

0
répondu Loren 2015-02-13 19:54:24