为什么jQuery UI datepicker不能在jQuery对话框模式中工作?

aa *_* th 14 jquery datepicker uidatepicker jquery-ui-datepicker

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

事实上,我可以在正常的文档文本输入中调用datepicker,并且我正常地得到了我的日历,但我不能在对话模式文本输入中做到这一点(在模态文本输入内部克隆之后我没有任何JavaScript错误).

这是我调用datepicker的代码:

$(function() {
    $("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' });
);
Run Code Online (Sandbox Code Playgroud)

我试过更改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');
}
Run Code Online (Sandbox Code Playgroud)

}

这是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>
Run Code Online (Sandbox Code Playgroud)

Sco*_*reu 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>
Run Code Online (Sandbox Code Playgroud)

  • 这行`$("#ui-datepicker-div").css("z-index","9999");`帮了我的问题.谢谢 . (3认同)

小智 6

如果设置

#ui-datepicker-div {z-index:1003;} 
Run Code Online (Sandbox Code Playgroud)

不行,试试

#ui-datepicker-div {z-index:1003 !important;}
Run Code Online (Sandbox Code Playgroud)


Jam*_*man 0

您能澄清一下您指的是哪个“模式对话框”吗?我假设是这个:

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

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

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

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