jquery日付ピッカーのz-indexの問題


106

スライドショーのdivがあり、そのdivの上に日付ピッカーフィールドがあります。

datepickerフィールドをクリックすると、datepickerパネルがスライドショーdivの後ろに表示されます。

そして、私はスクリプトを次のように置きました:

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

そのため、CSSで日付ピッカーのz-indexを変更できません。スクリプトが生成している日付ピッカーのz-indexは1で、スライドショーdiv(googleajaxapiでも呼び出す)のz-indexは5です。そのため、日付ピッカーのz-indexを5より大きくする必要があると思います。それを増やす方法はありますか?

誰か助けてもらえますか?


ここソリューションですstackoverflow.com/questions/11533161/...
開発者は、

回答:


176

次のスタイルを「input」テキスト要素に配置しますposition: relative; z-index: 100000;

datepicker divは入力からZインデックスを取得しますが、これは位置が相対的な場合にのみ機能します。

この方法を使用すると、jQuery UIからJavaScriptを変更する必要はありません。


8
これに関する問題は、入力が他の要素の上に表示されることです。これがめったに望ましい効果になることはありません
Serj Sagan

1
日付ピッカースパンにバインドされている場合、それは機能するはずですか?
rmoestl 2013

10
position : relative受け入れられず、私の状況では機能しません。以下のソリューションは正常に動作します。
Kiwy、2013

1
これはIE 11ブラウザーでは機能しません。このブラウザ固有ですか?
Ashwini Maddala 2015年

3
このソリューションは機能しますが、すべての状況に有効であるとは限りません。CSS '.ui-datepicker {z-index:9999!important;}'の1行で上書きするのが最善です
Daniel Tung

154

単にあなたのCSSで ' .ui-datepicker{ z-index: 9999 !important;}'を使用してくださいここで9999は、あなたの日付ピッカーを利用可能にしたい任意のレイヤー値に置き換えることができます。コードにコメントを付けたりposition:relative;、入力要素に' ' cssを追加したりしないでください。入力要素のz-indexを増やすと、すべての入力タイプのボタンに影響が及ぶため、場合によっては必要ないことがあります。


私はではdatepickerなく使用しなければなりませんでしたui-datepicker
M Smith 14

JavaScriptは依然として不連続なz-index、任意のスタッキングコンテキストを使用しており、2016年にはブラウザー間の互換性の問題がありますか?ActionScript 3 FTW(10年前、現在でも)。
Triynko 2016年


14

markyzm回答に基づいて、これは私のために働きました:

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

1
しかし、これは日付ピッカーオーバーレイではなく、入力にのみ影響しますか?
markyzm 2013

2
私はこの例jqueryui.com/datepickerを使用していますが、日付ピッカーのアイコンは使用していません。このソリューションでは、残りのWebコンポーネントに問題はありませんでした。
Lucas

5

ジャスティンの答えに加えて、乱雑なマークアップが心配な場合や、CSSでこの値をハードコード化したくない場合は、表示される前に入力を設定できます。このようなもの:

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

"position": "relative"プラグインは両方のルールまたはスタイルシートではなく両方のインラインスタイルで検索するため、ルールを省略できないことに注意してください。

dialog("widget")ポップアップする実際の日付ピッカーです。


1
この問題はJqueryUIスクリプトで対処する必要があり、デフォルトでオーバーレイを防止するように設定する必要があります。使用例の大部分は、カレンダー入力機能をオーバーレイする入力を必要としません。入力(または他の要素)をカレンダーにオーバーレイする必要がある場合は、このようなソリューションを使用する必要があります。そうは言っても、必要な場合にのみ適用するので、@ marksyzmがIMOの最良のソリューションになります。
FrankO 2014

5

私はクリックで使用してこの問題を解決しました:

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

このソリューションは、ポップアップウィンドウで完全に機能します。よろしくお願いします!
darkomen

5

日付ピッカーを使用するダイアログボックスがあります。それは常に隠されていました。z-indexを調整すると、下のフォームのフィールドがダイアログに常に表示されました。

私は問題を解決するために見たソリューションの組み合わせを使用しました。

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

before showは、選択されたときにdatepickerが常に一番上になるようにしますが、onCloseはフィールドのz-indexが確実にリセットされるようにし、後で別のdatepickerで開かれたダイアログで重複しないようにします。


この解決策は素晴らしく、私の問題を解決しました。しかし、 "onClose"の部分で少し編集してください。の$(this)代わりに入れます$('.ui-datepicker')。したがって、z-index:0ui-datepickerクラスのすべての入力ではなく、「この入力」に設定されます。
Asuka165


1

datepickerがdatatables.net tabletoolsボタンの上にあるページがあります。データテーブルボタンのz-indexは、個々の日付ピッカーの日付ボタンよりも高くなっています。Ronyeの回答のおかげで、position:relative;を使用してこの問題を解決できました。Zインデックス:10000。ありがとうございます。


1

これは私がテーマを逃していたときに起こりました。テーマが存在することを確認するか、テーマを再ダウンロードして、サーバーに再アップロードしてください。


1

それが私の問題を解決しました:

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

1

実際、CSSを効果的に追加できますが、ui-datepickerクラスの最後に.ui-datepicker{ z-index: 9999 !important;}変更jquery-ui.cssまたはjquery-ui.min.css追加できますz-index: 9999 !important;。どちらもうまくいきます(必要なのは1つだけです;-))


0

私もこの問題を抱えていました。日付ピッカーは入力のz-indexを使用するため、次のcssを追加しました

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

入力グループとフォームコントロールを使用して、親ID、クラス、または私の場合はブートストラップダイアログのいずれかによって、自分に適用されるルールを適用してください。


0

そうしなければならなかった

.datepicker.dropdown-menu {
    position: relative;
    z-index: 9999 !important;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.