Jquery tarih seçici z-endeksi sorunu


106

Bir slayt gösterisi div var ve bu div'in üzerinde bir tarih seçici alanım var.

Tarih seçici alanına tıkladığımda, tarih seçici paneli slayt gösterisi div'in arkasında görünüyor.

Ve senaryoyu şu şekilde koydum:

http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js

Bu yüzden CSS'de tarih seçicinin z-endeksini değiştiremiyorum. Betiğin oluşturduğu tarih seçicinin z-endeksi 1 ve slayt gösterim div (googleajaxapi aracılığıyla da çağrılır) z-endeksi 5'tir. Bu yüzden, tarih seçicinin z-endeksini 5'ten büyük artırmam gerekiyor sanırım. arttırmanın bir yolu var mı?

Biri bana yardım edebilir mi?


Yanıtlar:


176

'Giriş' metin öğesi aşağıdaki stil koyun: position: relative; z-index: 100000;.

Tarih seçici div, z-dizinini girdiden alır, ancak bu yalnızca konum göreli ise çalışır.

Bu şekilde, jQuery UI'den herhangi bir javascript'i değiştirmeniz gerekmez.


8
Bu sorun katkılarınız bu nadiren istenen etkidir, diğer elemanların üzerinde görünecek olmasıdır
Serj Sagan

1
Tarih seçici bir aralığa bağlı olduğunda bunun çalışması mı gerekiyor ?
rmoestl

10
position : relativekabul edilemez ve benim durumumda çalışmıyor. aşağıdaki çözüm iyi çalışıyor.
Kiwy

1
bu IE 11 tarayıcısında çalışmıyor. Bu tarayıcıya özel mi?
Ashwini Maddala

3
Bu çözüm işe yarasa da tüm durumlar için geçerli değildir. En tek CSS hattı ile overide etmektir '.ui-datepicker {! Z dizini: 9999 important;}'
Daniel Tung

154

basitçe css kullanımınızda ' .ui-datepicker{ z-index: 9999 !important;}' Burada 9999, tarih seçicinizin kullanılmasını istediğiniz katman değeriyle değiştirilebilir. Herhangi bir kod yorumlanmamalı position:relative;ve girdi öğelerine ' ' css eklenmemelidir. Çünkü, giriş öğelerinin z-endeksinin artırılması, tüm giriş türü düğmeleri üzerinde etkili olacaktır ve bu, bazı durumlarda gerekli olmayabilir.


Bunun datepickeryerine kullanmak zorunda kaldımui-datepicker
M Smith

JavaScript hala kesintili z-dizinleri, rastgele yığınlama bağlamları kullanıyor ve 2016'da tarayıcılar arası uyumluluk sorunları mı yaşıyor? ActionScript 3 FTW (on yıl önce ve hala bugün).
Triynko


14

Marksyzm cevabına dayanarak, bu benim için çalıştı:

$('input').datepicker({
    beforeShow:function(input) {
        $(input).css({
            "position": "relative",
            "z-index": 999999
        });
    }
});

1
Ancak bu yalnızca girdiyi etkiler, tarih seçici kaplamasını etkilemez?
marksyzm

2
Tarih seçici için bir simge kullanmayan bu jqueryui.com/datepicker örneğini kullanıyorum . Bu çözümle web bileşenlerinin geri kalanıyla sorun yaşamadım.
Lucas

5

Justin'in cevabına ek olarak, düzensiz işaretlemeden endişeleniyorsanız veya bu değerin CSS'de sabit kodlanmasını istemiyorsanız, girişi gösterilmeden önce ayarlayabilirsiniz. Bunun gibi bir şey:

$('input').datepicker({
    beforeShow:function(input){
        $(input).dialog("widget").css({
            "position": "relative",
            "z-index": 20
        });
    }
});

Eğer ihmal edemez Not "position": "relative"eklenti ya görünüşleri hem kuralları veya stil sayfasında satır içi tarzında, ancak, kural değil hem .

Açılan dialog("widget")gerçek tarih seçici.


1
Bu sorun, JqueryUI betiklerinde ele alınmalı ve varsayılan olarak kaplamaları önleyecek şekilde ayarlanmalıdır. Kullanım durumlarının çoğu hiçbir zaman herhangi bir girdinin takvim girdisi yeteneklerini kaplamasını istemez. Takvimin üzerine girdi (veya diğer öğelerin) sahip olması gerekiyorsa, bunun gibi bir çözüm kullanılmalıdır. Bunu söyledikten sonra, @marksyzm, yalnızca gerektiğinde uygulayacağınız için en iyi çözüm IMO olacaktır.
FrankO

5

Bu sorunu tıklayarak çözdüm:

var checkin = $('.dpd1').datepicker()
.on('click', function (ev) {
        $('.datepicker').css("z-index", "999999999");
}).data('datepicker');

Bu çözüm benim için açılır pencerede mükemmel çalışıyor. Teşekkürler !
darkomen

5

Tarih seçiciyi kullanan bir iletişim kutum var. Hep gizliydi. Z endeksini ayarladığımda, alt formdaki alan her zaman iletişim kutusunda görünüyordu.

Sorunu çözmek için gördüğüm çözümlerin bir kombinasyonunu kullandım.

$('.ui-datepicker', $form).datepicker({
                showButtonPanel: true,
                changeMonth: true,
                changeYear: true,
                dateFormat: "yy-M-dd",
                beforeShow: function (input) {
                    $(input).css({
                        "position": "relative",
                        "z-index": 999999
                    });
                },
                onClose: function () { $('.ui-datepicker').css({ 'z-index': 0  } ); }                    
            });

Önceki gösteri, tarih seçicinin seçildiğinde her zaman en üstte olmasını sağlar, ancak onClose, alanın z-endeksinin daha sonra farklı bir tarih seçici ile açılan iletişim kutularında çakışmaması için sıfırlanmasını sağlar.


Bu çözüm harika ve sorunumu çözdü. Ama "onClose" kısmında biraz düzenleyin. Ben koymak $(this)yerine $('.ui-datepicker'). Bu nedenle, z-index:0ui-datepicker sınıfındaki tüm girdiler yerine "bu girdi" olarak ayarlanacaktır .
Asuka165


1

Datepicker'ın datatables.net tabletools düğmesinin üstünde olduğu bir sayfam var. Veri tabloları düğmeleri, ayrı tarih seçici tarih düğmelerinden daha yüksek bir z-endeksine sahipti. Ronye'nin cevabı sayesinde bu sorunu pozisyonu kullanarak çözebildim: göreli; ve z-endeksi: 10000. Teşekkürler!


1

Bu, temayı kaçırdığımda başıma geldi. Temanın var olduğundan emin olun veya temayı yeniden yükleyin ve sunucunuza yeniden yükleyin.


1

Sorunumu çözen buydu:

 $( document ).ready(function() {   
    $('#datepickerid').datepicker({
     zIndexOffset: 1040 #or any number you want
     });
});

1

Aslında css'nize etkili bir şekilde ekleyebilirsiniz, .ui-datepicker{ z-index: 9999 !important;}ancak değiştirebilir jquery-ui.cssveya jquery-ui.min.cssui-datepicker sınıfının sonuna ekleyebilirsiniz z-index: 9999 !important;. her ikisi de benim için çalışıyor (Sadece birine ihtiyacın var ;-))


0

Ben de bu sorunu yaşadım, tarih seçici girdinin z-endeksini kullandığından, aşağıdaki css'yi ekledim

#dialogID input,.modal-dialog input, .modal-dialog .input-group .form-control{
  z-index:inherit;
}

Kendi giriş grubunu ve form kontrolünü kullanarak ebeveyn kimliği, sınıf veya benim durumumda bir önyükleme iletişim kutusu ile sizin için geçerli olan kuralı alın.


0

Yapmak zorundaydım

.datepicker.dropdown-menu {
    position: relative;
    z-index: 9999 !important;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.