У меня есть страница, на которой есть средство выбора даты JQuery, предназначенное для отображения дат в формате мм/гг. Я не писал первоначальный JQuery, и я не очень хорошо с ним знаком, поэтому это может быть простой проблемой, но когда пользователь нажимает кнопку «Готово», средство выбора даты исчезает на секунду, а затем снова открывается, как если бы пользователь щелкнул в текстовом поле снова.
Код, используемый для создания экземпляра средства выбора даты:
$(function() {
$('.datepicker').datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'mm/yy',
onClose: function(dateText, inst) {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year, month, 1));
},
beforeShow: function(input, inst) {
if ((datestr = $(this).val()).length > 0) {
year = datestr.substring(datestr.length - 4, datestr.length);
//month = jQuery.inArray(datestr.substring(0, datestr.length - 5), $(this).datepicker('option', 'monthNames'));
month = datestr.substring(0, datestr.length - 5);
$(this).datepicker('option', 'defaultDate', new Date(year, month-1, 1));
$(this).datepicker('setDate', new Date(year, month-1, 1));
}
}
});
$("#datepicker").mousedown(function() {
$('#ui-datepicker-div').toggle();
});
});
Погуглив некоторое время, я добавил обработчик mousedown, и это сделало так, что когда вы щелкаете в любом месте страницы вдали от средства выбора даты, оно закрывается, как и ожидалось, но если вы нажимаете кнопку «Готово», оно фактически не закрывает средство выбора даты.