テキスト入力の1つでjQueryUIdatepickerを使用したいと思います。これはダイアログモーダルです。
実際、通常のドキュメントテキスト入力でdatepickerを呼び出すことができ、カレンダーを通常どおり取得しましたが、ダイアログモーダルテキスト入力ではそれを実行できません(モーダルテキスト入力内でクリックした後、JavaScriptエラーなしで何も取得しませんでした)。
これはdatepickerを呼び出すための私のコードです:
$(function() {
$("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' });
);
Css .ui-datepicker Z-indexプロパティを変更しようとしましたが、それでも何も得られませんでした。
この問題を解決するためのヒントはありますか?
よろしく、
my_page.htmlにあります
function openSaisieARModal()
{
window_select_CodeAgence = new showModalWindow('SaisieARModal', 500);
}
そして私はこのスクリプトを使用します
var showModalWindow=function(id, width)
{
var newId=id+'Copy';
this.id=newId;
var previousNode=document.getElementById(newId);
if(previousNode!=null)
{
previousNode.parentNode.removeChild(previousNode);
}
var rootNode=document.getElementsByTagName('body')[0];
this.node=document.createElement("div");
rootNode.appendChild(this.node);
this.node.setAttribute('id', newId);
this.node.setAttribute('title', document.getElementById(id).getAttribute('title'));
this.node.innerHTML=document.getElementById(id).innerHTML;
if(width==null)
{
width=400;
}
$('#'+newId).dialog({autoOpen: true, modal: true, width:width });
this.closeWindow=function()
{
$('#'+this.id).dialog('close');
}
this.centerContent=function()
{
this.node.style.textAlign='center';
}
this.center=function()
{
$('#'+this.id).dialog('option', 'position', 'center');
}
</ code>
}
これはmy_page.htmlのモーダルHTMLコードです
<div style="display:none;">
<div id="SaisieARModal" title="DATE">
<table class="tableFrame" cellspacing="0px" width="100%">
<tr>
<td class="topLeft">
</td>
<td class="topCenter">
</td>
<td class="topRight">
</td>
</tr>
<tr>
<td class="middleLeft">
</td>
<td class="middleCenter">
<table>
<tr align="center">
<td>
Date
</td>
<td>
<input id="MyTextInputID" type="text" />
</td>
</tr>
</table>
</td>
<td class="middleRight">
</td>
</tr>
<tr>
<td class="bottomLeft">
</td>
<td class="bottomCenter">
</td>
<td class="bottomRight">
</td>
</tr>
</table>
<div>
</div>
</div>
</div>
うまくいく簡単な例をモックアップしました。 ui-datepicker
でz-indexを変更しようとしましたが、Firebugでレンダリングされたコードを調べたところ、必要なIDはui-datepicker-div
のようです。 z-indexを9999に設定すると、モーダルダイアログの上部に表示されます。
<script type='text/javascript'>
$(function() {
$("#datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
});
function openmodal() {
var $dialogContent = $("#event_edit_container");
$dialogContent.dialog({
modal: true,
title: "Test",
close: function() {},
buttons: {
save : function() {},
cancel : function() {}
}
}).show();
$("#ui-datepicker-div").css("z-index", "9999");
}
</script>
<div ><a href="javascript:openmodal();">Open modal</a></div>
<div id="event_edit_container" >
<form>
Date: <input type="text" id="datepicker" name="datepicker">
</form>
</div>
設定する場合
#ui-datepicker-div {z-index:1003;}
動作しません、試してみてください
#ui-datepicker-div {z-index:1003 !important;}
私の場合、ZendXJqueryヘルパーを使用していました。クリップスタイルを修正するために、次のcssを追加しました。
#ui-datepicker-div {z-index:9999; clip:auto}
以下のように、モーダルダイアログウィンドウのopen関数で日付ピッカーを初期化します。
日付ピッカー要素:
<input type="text" id="myDateStr"/>
open関数から呼び出して、ダイアログボックスから日付ピッカーを初期化します。
'open:function(){'
$('#myDateStr').datepicker
({
dateFormat: 'mm/dd/yy',
changeMonth: true,
changeYear: true,
});
}
これは微調整なしで完全に機能しました。
z-indexを変更するために既存のcssクラスまたはスタイルを変更する必要はありません。
Jquery-ui-1.8.1.custom.css(またはお持ちのjquery uiのバージョン)で変更します
.ui-datepicker
からのクラス
{ width: 17em; padding: .2em .2em 0; }
に
{ width: 17em; padding: .2em .2em 0; z-index:99999; }
それは私にとってはうまくいき、日付ピッカーはモーダルダイアログ内でうまく機能します!
enter code here
単純化した場合(テスト用)
$('#'+newId).dialog({autoOpen: true, modal: true, width:width });
そしてそれを作ります:
$('#SaisieARModal').dialog({autoOpen: true, modal: true, width:width });
モーダルは表示されますか?また、bgiframe: true
オプションを試しましたか?
これが完全に関連性があるかどうかはわかりませんが、何かが(おそらく)日付ピッカーをモーダルなもののどこかに置いています。
編集:あなたが変更した場合、もう1つ:
$(function() { $("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' }); });
に
$(function() {
$("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' });
$("#MytextInputID").click(function(){alert("working");});
});
アラートは表示されますか?
私の場合、以下の方がうまくいきます
$(document).on("click", ".modal-body", function () {
$("#datepicker").datepicker({
dateFormat: 'yy-mm-dd'
});
});
参照している「モーダルダイアログ」を明確にできますか。私はこれを想定しています:
http://docs.jquery.com/UI/Dialog
あなたのコードをもっと見ることなしに、それは難しいです。添付のHTMLを投稿すると便利な場合があります。
ただし、覚えておくべきことの1つは、モーダルダイアログでは、新しいウィンドウを開いているような印象を与えることです。ただし、実際には、コンテンツは他のコンテンツと同じHTMLドキュメント内にあります。これは、要素IDを割り当てるときに混乱を招くことがよくあります。たとえば、一部の重複が指定される場合があります。
また、セレクターが正しく機能していること、つまり目的のアイテムを選択していることを確認できる範囲でデバッグ/テストを行っていることも前提としています。