Jquery UI DatePicker не работает должным образом во втором диалоге

Я был бы признателен за вашу помощь с этим. Я искал починку часами и просто не могу заставить ее работать.

У меня есть два файла «editor.php» и «functions.php».

Итак, я получил этот указатель даты Jquery UI, который я инициализирую и присваиваю текстовому полю уникальный идентификатор в editor.php.

$(function() {
$('input[name=Date]').attr('id',   'Date' + '_' + $("#Id").val());

$("#Date_" + $('#Id').val()).datepicker({
dateFormat: "dd.mm.yy",
changeMonth: true,
showWeek: true
});
}

Моя функция открытия диалога находится в functions.php

function openDialog()
{
var customDialog = $('#customDialog').dialog( {
open: function () {
$('body').addClass('stop-scrolling');
$('.ui-widget-overlay').addClass('custom-overlay');
},
beforeClose: function () {
$('body').removeClass('stop-scrolling');
$('.ui-widget-overlay').removeClass('custom-overlay');
},
autoOpen: false,
modal: true,
show: {
effect: "fade",
duration: 400
},
hide: {
effect: "fade",
duration: 400
},
} );

customDialog.load('editor.php');

customDialog.dialog("open");
}

А также в этом functions.php я получил div, который содержит диалог

<div id="customDialog" title="Editor"></div>

В моем диалоге есть форма, которую я создаю в editor.php. Диалог и данные моей формы отображаются правильно. Теперь у меня есть средство выбора даты в одном из моих текстовых полей в этой форме, которое прекрасно работает в этом диалоге.

Теперь у меня есть ссылка в этом диалоге, которая открывает другой диалог и закрывает старый, который также отлично работает. Моя проблема сейчас в том, что средство выбора даты больше не будет отображаться, но я уверен, что оно есть, потому что я могу щелкнуть по нему и нажать клавишу ввода, и текущая дата отобразится в этом текстовом поле.

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

$("#customDialog").dialog('close');

это не сработало: «не удается вызвать методы в диалоговом окне до инициализации; попытка вызвать метод close» ». Поэтому я использовал следующий код, который вроде работал (но я уверен, что он не закрывается должным образом и все еще где-то скрыт)

$('.ui-dialog-titlebar-close').click()

Изменение z-индекса datepicker-ui на что-то очень высокое не помогло

Мой вопрос: как правильно закрыть диалог. Я не могу получить $("#customDialog").dialog('close'); работать

Пожалуйста, спросите, если что-то неясно. Заранее спасибо!

РЕДАКТИРОВАТЬ:
добавлен недостающий апостроф в customDialog.load (‘editor.php’); и отредактировал вопрос, чтобы сделать его более понятным

0

Решение

Хорошо, я нашел решение этого. Я надеюсь, что это помогает кому-то нуждающемуся.
Я использую Jquery 1.11.1, и кажется, что в файле jquery-ui.js отсутствует строка кода.
Вам нужно добавить эту строку в ваш jquery-ui.js в этом конкретном месте.
Он будет повторно инициализировать ваш указатель даты, даже если вы не обновите свою страницу.

/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick)
.find(document.body).append($.datepicker.dpDiv); // added line
$.datepicker.initialized = true;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]