Я бы не стал использовать это решение, потому что оно создает ошибки практически в каждом браузере.
$(function() {
$('#datepicker').datepicker({
onSelect: function(dateText, inst) { inst.show() }
});
});
Лучшее, что вы можете сделать, это переписать метод _selectDate в jQuery ui datepicker.
Вы делаете это, снова добавляя эту функцию в указатель даты следующим образом:
$('#dateField').datepicker({
changeMonth: true,
changeYear: true,
},
$.datepicker._selectDate = function(id, dateStr){
var onSelect,
target = $(id),
inst = this._getInst(target[0]);
dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
if (inst.input) {
inst.input.val(dateStr);
}
this._updateAlternate(inst);
onSelect = this._get(inst, "onSelect");
if (onSelect) {
onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback
} else if (inst.input) {
inst.input.trigger("change"); // fire the change event
}
if (inst.inline){
this._updateDatepicker(inst);
} else {
this._lastInput = inst.input[0];
if (typeof(inst.input[0]) !== "object") {
inst.input.focus(); // restore focus
}
this._lastInput = null;
}
})
);
обычно это будет this._hideDatepicker (); в этом сценарии.
Я оставил это. Вы также можете изменить сам файл jQuery, однако я не фанат таких действий, потому что вы потеряете свою функциональность после обновления jQuery.
С моим решением не было бы необходимости делать это.