Подтвердить что ты не робот

Почему jQuery UI datepicker не работает в диалоговом окне jQuery?

Я хочу использовать jQuery UI datepicker в одном из моих текстовых входов. Этот диалог находится в диалоговом режиме.

На самом деле, я могу назвать datepicker в обычных текстовых вводах документа, и я получил свой календарь, но я не могу этого сделать в диалоговых модальных текстовых вводах (после звонка внутри модального ввода текста я ничего не получил без ошибки JavaScript).

Это мой код для вызова datepicker:

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

Я попытался изменить свойства Z-index css.ui-datepicker, но у меня все еще ничего не было.

У вас есть советы по устранению этой проблемы?

Привет,


в my_page.html у меня есть

function openSaisieARModal()
        {
            window_select_CodeAgence = new showModalWindow('SaisieARModal', 500);
        }

И я использую этот script

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

}

код >

и это модальный HTML-код в my_page.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>
4b9b3361

Ответ 1

Я издевался над быстрым примером, который работает. Вы попытались изменить z-индекс на ui-datepicker, но после просмотра визуализированного кода в Firebug он выглядит так, как вам нужен идентификатор 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>

Ответ 2

Если параметр

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

не работает, попробуйте

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

Ответ 3

В моем случае я использовал помощник Jendery ZendX. Я добавил следующий css, чтобы исправить стиль клипа:

#ui-datepicker-div {z-index:9999; clip:auto}

Ответ 4

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

Это сработало для меня, а команда выбора даты отлично работает в модальном диалоге!

Ответ 5

Можете ли вы уточнить, к какому модальному диалогу вы относитесь. Я предполагаю его следующее:

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

Не видя больше своего кода, его сложно. Это может быть полезно, если вы публикуете сопроводительный HTML.

Одна вещь, которую следует помнить, заключается в том, что модальный диалог дает вам впечатление, что вы открываете новое окно, однако на самом деле контент находится в том же HTML-документе, что и остальная часть вашего контента. Это может часто приводить к путанице при назначении идентификаторов элементов, например, некоторые дубликаты могут быть указаны.

Я также предполагаю, что вы отлаживали/тестировали в той мере, в какой вы уверены, что ваш селектор работает правильно, т.е. выбирает элементы, которые вы намереваетесь

Ответ 6

enter code here Если вы упростите (для теста)

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

и сделайте это:

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

появляется модальная мода? Также вы попробовали вариант bgiframe: true?

Не уверен, что все это полностью релевантно, но что-то помещает (скорее всего) сборщик данных за модальным материалом где-то.

EDIT: Еще одна вещь, если вы меняете:

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

к

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

появляется оповещение?

Ответ 7

В моем случае ниже работает лучше

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

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

            });

});

Ответ 8

Инициализировать подборщик даты в открытой функции вашего модального диалогового окна, как показано ниже:

  • Элемент выбора даты:

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

  • Вызов из функции open для инициализации диалогового окна datepicker:

    'open: function() {'

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

Это отлично работало без каких-либо настроек.

Не нужно изменять какой-либо существующий класс или стиль css, чтобы изменить z-index.