#jquery #jquery-ui #datepicker
#jquery #jquery-пользовательский интерфейс #datepicker
Вопрос:
Мне нужно добавить класс «выше» или «ниже» к моему элементу ввода в зависимости от того, с какой стороны открылся datepicker.
Я просто не могу понять, как получить позицию экземпляра datepicker, который вот-вот будет создан …. может быть, я просто неправильно об этом думаю.
$('#order-main .datepicker').datepicker({
showOn: 'both',
buttonImage: 'img/icons/calendar.png',
buttonImageOnly: true,
minDate: -1,
maxDate: " 1Y",
showButtonPanel: true,
showAnim: 'slideDown',
hideIfNoPrevNext: true,
dateFormat: 'yyyy-mm-dd',
duration: 500,
beforeShow: function(input, inst) {
var pos = $(input).offset().top;
// if the top position of the to-be-created instance is < top position
//of the elemnt, its ABOVE, therefore add above, otherwise add below.
inst.dpDiv.addClass('above')
}
});
Я знаю, как расширить его с помощью $.extend($.datepicker,{_checkOffset: function(inst,offset, IsFixed){return offset}}); поэтому он всегда будет отображаться ниже, но я бы предпочел сохранить его функциональность динамического размещения, но просто ЗНАЮ, находится ли он выше или ниже, чтобы я мог правильно оформить свой элемент ввода.
Небольшая вещь, но было бы неплохо ее выполнить.
Ответ №1:
Я думаю, это то, что вы ищете.
Используйте position вместо offset.
beforeShow: function(input, inst) {
if (inst.dpDiv.position().top > $(input).position().top) {
inst.dpDiv
.removeClass('below')
.addClass('above');
} else {
inst.dpDiv
.removeClass('above')
.addClass('below');
}
}