ตัวเลือกวันที่ jquery ปัญหา z-index


106

ฉันมี div สไลด์โชว์และฉันมีฟิลด์ datepicker เหนือ div นั้น

เมื่อฉันคลิกในช่อง datepicker พาเนล datepicker จะแสดงด้านหลัง div สไลด์โชว์

และฉันได้วางสคริปต์เป็น:

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

ดังนั้นฉันจึงไม่สามารถเปลี่ยน z-index ของ datepicker ใน CSS ได้ z-index ของ datepicker ที่สคริปต์สร้างคือ 1 และสไลด์โชว์ div ของฉัน (เรียกผ่าน googleajaxapi ด้วย) z-index คือ 5 ดังนั้นฉันเดาว่าฉันต้องเพิ่ม z-index ของตัวเลือกวันที่มากกว่า 5 จึงมี วิธีใดที่จะเพิ่มได้?

ใครสามารถช่วยฉัน?


นี่คือวิธีแก้ปัญหาstackoverflow.com/questions/11533161/…
พัฒนา

คำตอบ:


176

ใส่รูปแบบต่อไปนี้ที่ 'ป้อนข้อมูล' position: relative; z-index: 100000;องค์ประกอบข้อความ:

datepicker div รับดัชนี z จากอินพุต แต่จะใช้ได้เฉพาะเมื่อตำแหน่งสัมพันธ์กัน

ใช้วิธีนี้คุณไม่ต้องแก้ไขจาวาสคริปต์ใด ๆ จาก jQuery UI


8
ปัญหาเกี่ยวกับสิ่งนี้คืออินพุตของคุณจะแสดงเหนือองค์ประกอบอื่น ๆ ซึ่งไม่ค่อยได้ผลตามที่ต้องการ
Serj Sagan

1
มันควรจะใช้งานได้เมื่อdatepickerถูกผูกไว้กับช่วงเวลาหรือไม่?
rmoestl

10
position : relativeไม่เป็นที่ยอมรับและไม่ได้ผลในสถานการณ์ของฉัน วิธีแก้ปัญหาใช้งานได้ดี
Kiwy

1
สิ่งนี้ไม่ทำงานบนเบราว์เซอร์ IE 11 เบราว์เซอร์นี้เฉพาะหรือไม่
Ashwini Maddala

3
วิธีนี้แม้ว่าจะใช้งานได้ แต่ก็ไม่สามารถใช้ได้กับทุกสถานการณ์ ที่ดีที่สุดคือทับด้วย CSS '.ui-datepicker {z-index: 9999! important;}'
Daniel Tung

154

เพียงแค่ใน css ของคุณใช้ ' .ui-datepicker{ z-index: 9999 !important;}' ที่นี่ 9999 สามารถแทนที่เป็นค่าเลเยอร์ใดก็ได้ที่คุณต้องการให้ datepicker ของคุณพร้อมใช้งาน ไม่ต้องใส่รหัสใด ๆ ที่จะแสดงความคิดเห็นหรือเพิ่ม ' position:relative;' css ในองค์ประกอบอินพุต เนื่องจากการเพิ่ม z-index ขององค์ประกอบอินพุตจะมีผลกับปุ่มประเภทอินพุตทั้งหมดซึ่งอาจไม่จำเป็นสำหรับบางกรณี


ฉันต้องใช้datepickerมากกว่าui-datepicker
M Smith

JavaScript ยังคงใช้ดัชนี z ที่ไม่ต่อเนื่องบริบทการเรียงซ้อนโดยพลการและมีปัญหาความเข้ากันได้ข้ามเบราว์เซอร์ในปี 2559 หรือไม่ ActionScript 3 FTW (ทศวรรษที่แล้วและยังคงเป็นปัจจุบัน)
Triynko


14

จากคำตอบ markyzm สิ่งนี้ใช้ได้กับฉัน:

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

1
แต่สิ่งนี้มีผลกับอินพุตเท่านั้นไม่ใช่การซ้อนทับ datepicker?
markyzm

2
ฉันใช้jqueryui.com/datepickerตัวอย่างนี้ซึ่งไม่ได้ใช้ไอคอนสำหรับ datepicker ด้วยวิธีนี้ฉันไม่มีปัญหากับส่วนประกอบของเว็บที่เหลือ
Lucas

5

การเพิ่มคำตอบของจัสตินหากคุณกังวลเกี่ยวกับมาร์กอัปที่ไม่เป็นระเบียบหรือคุณไม่ต้องการให้ค่านี้ฮาร์ดโค้ดใน CSS คุณสามารถตั้งค่าอินพุตก่อนที่จะแสดง สิ่งนี้:

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

โปรดทราบว่าคุณไม่สามารถละเว้น"position": "relative"กฎได้เนื่องจากปลั๊กอินมีลักษณะอินไลน์สำหรับทั้งสองกฎหรือสไตล์ชีท แต่ไม่ใช่ทั้งสองอย่าง

dialog("widget")เป็น datepicker ที่เกิดขึ้นจริงที่ปรากฏขึ้น


1
ปัญหานี้ควรได้รับการแก้ไขในสคริปต์ JqueryUI และตั้งค่าเพื่อป้องกันการซ้อนทับตามค่าเริ่มต้น กรณีการใช้งานส่วนใหญ่ไม่ต้องการให้อินพุตใด ๆ ซ้อนทับความสามารถในการป้อนข้อมูลปฏิทิน หากจำเป็นต้องมีอินพุต (หรือองค์ประกอบอื่น ๆ ) ซ้อนทับปฏิทินควรใช้วิธีแก้ปัญหาเช่นนี้ ต้องบอกว่า @marksyzm เป็นทางออกที่ดีที่สุด IMO เพราะคุณจะใช้เมื่อจำเป็นเท่านั้น
FrankO

5

ฉันมีปัญหานี้ฉันแก้ไขได้โดยใช้เมื่อคลิก:

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

โซลูชันนี้ทำงานได้อย่างสมบูรณ์บนหน้าต่างป๊อปอัปสำหรับฉัน ขอบคุณ!
darkomen

5

ฉันมีกล่องโต้ตอบที่ใช้ datepicker อยู่ มันถูกซ่อนไว้เสมอ เมื่อฉันปรับดัชนี z ฟิลด์ในรูปแบบล่างจะปรากฏในกล่องโต้ตอบเสมอ

ฉันใช้วิธีแก้ปัญหาหลายอย่างที่เห็นเพื่อแก้ไขปัญหา

$('.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  } ); }                    
            });

การแสดงก่อนหน้าทำให้แน่ใจว่า datepicker จะอยู่ด้านบนเสมอเมื่อเลือก แต่ onClose ช่วยให้แน่ใจว่าดัชนี z ของฟิลด์ได้รับการรีเซ็ตเพื่อไม่ให้ทับซ้อนกันในกล่องโต้ตอบใด ๆ ที่เปิดในภายหลังด้วย datepicker อื่น


วิธีนี้ดีมากและแก้ปัญหาของฉันได้ แต่แก้ไขเล็กน้อยในส่วน "onClose" ฉันใส่$(this)แทน$('.ui-datepicker'). ดังนั้นมันจะตั้งค่าz-index:0เป็น "อินพุตนี้" แทนอินพุตทั้งหมดด้วยคลาส ui-datepicker
Asuka165


1

ฉันมีหน้าที่มี datepicker อยู่ด้านบนของปุ่ม datatables.net tabletools ปุ่มข้อมูลมีดัชนี z สูงกว่าปุ่ม datepicker แต่ละปุ่ม ขอบคุณคำตอบของ Ronye ฉันสามารถแก้ไขปัญหานี้ได้โดยใช้ position: relative; และ z-index: 10,000 ขอบคุณ!


1

สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันพลาดธีม ตรวจสอบให้แน่ใจว่ามีธีมอยู่หรืออาจโหลดธีมซ้ำแล้วอัปโหลดใหม่ไปยังเซิร์ฟเวอร์ของคุณ



1

ในความเป็นจริงคุณมีประสิทธิภาพสามารถเพิ่มใน CSS ของคุณ.ui-datepicker{ z-index: 9999 !important;}แต่คุณสามารถปรับเปลี่ยนjquery-ui.cssหรือและเพิ่มในตอนท้ายของการเรียนjquery-ui.min.css UI-datepicker ที่ z-index: 9999 !important;ทั้งสองสิ่งใช้ได้ผลสำหรับฉัน (คุณต้องการเพียงสิ่งเดียวเท่านั้น ;-))


0

ฉันมีปัญหานี้เช่นกันเนื่องจาก datepicker ใช้ z-index ของอินพุตฉันจึงเพิ่ม css ต่อไปนี้

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

เพียงแค่ใช้กฎที่ใช้กับของคุณไม่ว่าจะโดยรหัสหลักคลาสหรือในกรณีของฉันคือกล่องโต้ตอบ bootstrap โดยใช้กลุ่มอินพุตและการควบคุมแบบฟอร์ม


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.