Я был бы признателен за вашу помощь с этим. Я искал починку часами и просто не могу заставить ее работать.
У меня есть два файла «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’); и отредактировал вопрос, чтобы сделать его более понятным
Хорошо, я нашел решение этого. Я надеюсь, что это помогает кому-то нуждающемуся.
Я использую 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;
}
Других решений пока нет …