問題は単純明快ですが、それを解決する方法を見つけるのに苦労しています。
私は、カスタムメイドの「iosスタイルのオン/オフ切り替え」とともにjQuery-ui日付ピッカーを使用しています。このトグルは、現在、日付ピッカーの上に表示されているいくつかの絶対配置された要素を使用します。
下の7月6日をカバーするcircleい円を参照してください...
これを行うための汚い方法(少なくともimo)は、スタイルシートの1つにスタイルを記述することですが、ピッカーが起動するときにJavaScriptを使用してこれを完了させたいと思います。
私はすでに試しました
$('.date_field').datepicker();
$('.date_field').datepicker("widget").css({"z-index":100});
そして
$('.date_field').datepicker({
beforeShow: function(input, inst) {
inst.dpDiv.css({"z-index":100});
}
});
しかし、datepickerが起動されるたびにz-indexが上書きされるようです。
どんな助けも大歓迎です!
JQueryはdatepickerウィジェットのstyle
属性を呼び出すたびにリセットするため、質問のJSコードは機能しません。
style
のz-index
を簡単にオーバーライドする方法は、 別の回答 で既に述べた!important
CSSルールを使用することです。さらに別の answer は、入力要素自体にposition: relative;
およびz-index
を設定することを提案します。これらは、Datepickerウィジェットに自動的にコピーされます。
しかし、要求されたように、何らかの理由であなたが本当にそれを動的に設定する必要があり、ページにさらに不必要なコードと処理を追加する必要がある場合、これを試すことができます:
$('.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);
}
});
jQuery UIによってリセットされると、ウィジェットを呼び出すたびに、ウィジェットのz-index
を設定する遅延関数オブジェクトを作成しました。それで十分です。
CSSハックはIMOほどfarくありません。CSSにはjQuery UIの調整(ページのIE6の調整のすぐ上)専用のスペースを確保しています。
よりエレガントな方法があります。このCSSを追加します。
.date_field {position: relative; z-index:100;}
jQueryはカレンダーのz-index
を101(対応する要素よりも1つ多い)に設定します。 position
フィールドは、absolute
、relative
、またはfixed
でなければなりません。 jQueryは最初の要素の親(絶対/相対/固定)を検索し、そのz-index
を取ります
CSSを使用してインライン!important
値を強制するには、z-index
句を使用する必要があります。
.ui-datepicker{z-index: 99 !important};
bootstrapモーダルと組み合わせてdatepickerを使用しようとしたときに、これは私にとってはうまくいきました:
$('input[id^="txtDate"]').datepicker();
$('input[id^="txtDate"]').on('focus', function (e) {
e.preventDefault();
$(this).datepicker('show');
$(this).datepicker('widget').css('z-index', 1051);
});
もちろん、自分のニーズに合わせてセレクタを変更してください。 bootstrapモーダルのz-indexが1050に設定されているため、「z-index」を1051に設定しました。
日付ピッカーは、ポップアップz-indexをその関連フィールドよりも1つ多く設定して、そのフィールド自体がポップアップダイアログ内にある場合でも、そのフィールドの前に保持します。デフォルトでは、z-indexは0なので、datepickerは1になります。datepickerが正しく表示されない場合はありますか? JQueryフォーラム投稿
Z-indexを100にするには、z-index:99;
の入力が必要です。JQueryUIはdatepickerをz-index:100
に更新します
<input style="z-index:99;">
または<input class="high-z-index">
およびcss .high-z-index { z-index: 99; }
また、ダイアログボックスから継承するz-indexを指定して、jQueryUIにz-indexを適切に検出させることもできます。
<input style="z-index:inherit;">
または<input class="inhert-z-index">
およびcss .inherit-z-index { z-index: inherit; }
私の場合、何も機能しませんでした。日付ピッカーを持つ入力タイプにz-indexを追加する必要がありました。
<input type="text" class="datepicker form-control" datatype="date" style="z-index: 10000;" id="txtModalDate">
これはBootstrap datetimepicker用
Divにスクロールが表示されて日付ピッカーが隠れている場合は、次を使用します。
overflow-x: visible !important;
overflow-y: visible !important;
あなたのdatepickerと他のアイテムを含むdiv全体のCSSで
.dialogModel{
overflow-x: visible !important;
overflow-y: visible !important;
}
最も自然な方法は、「相対的な」位置を持ち、コントロールの上に表示される要素よりも高い「z-index」を持つ「プラットフォーム」に日付ピッカー要素を単に配置することです...