Развернув мой комментарий, вы захотите либо создать диалоговое окно и средство выбора даты с такими параметрами, как autoOpen: false
, либо создать их на лету.Похоже, вы намеревались создать их на лету, поэтому приведу следующий пример.
$(function() {
function confirm_renewal(date) {
var result = confirm("Please confirm that you wish to renew your application for " + date);
}
function enableDialog(event) {
var $dlg = $("<div>", {
id: "renew-dlg",
title: "Renew Your Application"
});
var $dp = $("<input>", {
id: "renewDate",
type: "text",
class: "ui-state-default"
}).appendTo($dlg);
$dp.datepicker({
dateFormat: "dd MM yy",
title: 'Test Dialog',
minDate: 0,
maxDate: 365,
disabled: true
});
$dlg.dialog({
closeOnEscape: false,
modal: true,
draggable: false,
resizable: false,
hide: {
effect: 'fade',
duration: 100
},
stack: true,
zIndex: 10000,
fluid: true,
dialogClass: 'ui-dialog-osx',
open: function(event, ui) {
$dp.datepicker('enable');
},
close: function(event, ui) {
$dp.datepicker('disable');
},
buttons: [{
id: "btn-ok-dlg",
text: "OK",
click: function() {
if ($dp.val() == "") {
$dp.addClass("ui-state-highlight");
return false;
}
$(this).dialog('destroy');
$dp.datepicker('destroy');
confirm_renewal($dp.val());
$dp.remove();
$dlg.remove();
}
},
{
id: "btn-close-dlg",
text: "Cancel",
click: function() {
$(this).dialog('destroy');
$dp.datepicker('destroy');
$dp.remove();
$dlg.remove();
}
}
],
});
}
$("#frm-renew-btn").on("click", enableDialog);
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<button id="frm-renew-btn">Renew</button>
Заключение в функцию позволяет выполнить ее как обратный вызов.Вы увидите, что я создаю элементы HTML, а затем инициализирую пользовательский интерфейс jQuery для этих элементов.Я добавил несколько проверок и удалил все, что было сделано.
Надеюсь, это поможет.