14

我想在我的一个文本输入中使用 jQuery UI datepicker。这是一个对话框模式。

事实上,我可以在正常的文档文本输入中调用 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');
}

}

这是 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>
4

8 回答 8

17

我模拟了一个可行的快速示例。您尝试更改 z-index ,ui-datepicker但在查看 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>
于 2010-01-15T16:39:13.907 回答
7

如果设置

#ui-datepicker-div {z-index:1003;} 

不行,试试

#ui-datepicker-div {z-index:1003 !important;}
于 2012-02-24T18:32:03.143 回答
3

在模态对话框窗口的打开功能中初始化日期选择器,如下所示:

  1. 您的日期选择器元素:

    <input type="text" id="myDateStr"/>

  2. 打开函数调用以从对话框初始化日期选择器:

    '打开:函数(){'

        $('#myDateStr').datepicker
        ({
                              dateFormat: 'mm/dd/yy',
                              changeMonth: true,
                              changeYear: true,
                            });
        }
    

这在没有任何调整的情况下完美运行。

无需更改任何现有的 css 类或样式即可更改 z-index。

于 2016-07-26T16:53:07.900 回答
2

就我而言,我使用的是 ZendX Jquery 助手。我添加了以下 css 来修复剪辑样式:

#ui-datepicker-div {z-index:9999; clip:auto}
于 2011-07-16T16:40:03.940 回答
1

在 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; }

这对我有用,日期选择器在模态对话框中效果很好!

于 2011-03-25T08:56:35.973 回答
0

enter code here如果您简化(用于测试)

$('#'+newId).dialog({autoOpen: true, modal: true, width:width }); 

并使它:

$('#SaisieARModal').dialog({autoOpen: true, modal: true, width:width }); 

模态出现了吗?你也试过这个bgiframe: true选项吗?

不确定这是否完全相关,但有些东西(很可能)将日期选择器放在模态内容后面的某个地方。

编辑:另一件事,如果你改变:

$(function() { $("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' }); });

    $(function() { 
       $("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' });
       $("#MytextInputID").click(function(){alert("working");});
    });

警报是否出现?

于 2010-01-15T14:12:46.070 回答
0

您能否澄清您所指的“模态对话框”。我假设它是这个:

http://docs.jquery.com/UI/Dialog

没有看到更多的代码,这很困难。如果您发布随附的 HTML,它可能会很有用。

但是要记住的一件事是,模态对话框给您的印象是您正在打开一个新窗口,但实际上内容与您的其余内容位于同一个 HTML 文档中。在分配元素 ID 时,这通常会导致混淆,例如,可能会指定一些重复项。

我还假设您已经调试/测试到您确定选择器工作正常的程度,即选择您想要的项目

于 2010-01-13T16:45:31.057 回答
0

就我而言,以下效果更好

$(document).on("click", ".modal-body", function () {

    $("#datepicker").datepicker({
                dateFormat: 'yy-mm-dd'

            });

});
于 2015-06-20T16:01:36.473 回答