Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   jQuery datepicker + blockUI в Опере 9.27 проблема позиционирования (https://javascript.ru/forum/css-html-browser/6648-jquery-datepicker-blockui-v-opere-9-27-problema-pozicionirovaniya.html)

Dionysius 11.12.2009 20:37

jQuery datepicker + blockUI в Опере 9.27 проблема позиционирования
 
Вложений: 1
Здравствуйте.

Суть проблемы:
Использую jQuery с несколькими плагинами. Среди них blockUI для всплывающего окна и datepicker для выбора дат. Во всплывающем окне находится форма с полем ввода, к которому прикрепляется календарь. В Опере 9.27 он открывается не под полем ввода, а где-то в верхнем углу.
Через firebug обнаружил, что блоку с календарём задаётся свойство position:fixed. Если же календарь привязывается к полю ввода, которое находится в любом месте страницы (но не во всплывающем окне), то ему задаётся свойство position:absolute. Скриншот прилагаю
Как это победить?

Dionysius 11.12.2009 23:13

Удалось выяснить, что в данном случае неверно считается позиция поля ввода - jQuery.offset().

x-yuri 12.12.2009 02:44

дай простейшую тестовую страничку, которая демонстрирует проблему

Dionysius 12.12.2009 13:02

Вложений: 1
Прикрепил архив - там упрощенная страничка. Нужно кликнуть "добавить клиента" и потом на календарь.

Сейчас вижу два варианта решения проблемы:
- переверстать форму так, чтобы в Опере 9.27 высота считалась верно
- сделать костыль в самом jQuery для данной ситуации

Dionysius 13.12.2009 17:50

Судя по всему, проблема в том, что поле с формой вложены в div, у которого position:fixed.

x-yuri 23.12.2009 01:54

может уже не актуально, но в opera 8 tr.scrollTop - это что-то типа координаты y, относительно верхнего края таблицы O_o jQuery.offset этого не учитывает. Хотя может там еще какие-нибудь нюансы есть

Dionysius 23.12.2009 16:41

Основной нюанс в div'е, у которого position:fixed. Опера 9.27 возвращает 0.
Решил проблему вставкой календаря в саму форму, а не как pop-up


Часовой пояс GMT +3, время: 07:53.