jQuery UI Автозаполнение с помощью z-index полосы прокрутки - PullRequest
2 голосов
/ 13 января 2011

У меня есть текстовое поле, к которому я присоединяю функцию автозаполнения пользовательского интерфейса jQuery, и я использую CSS, чтобы придать ему максимальную высоту на примере здесь .Моя проблема заключается в том, что при этом проблема z-index, которую решает bgiframe , возвращается снова, но другим способом.Исходное меню автозаполнения находится над всеми элементами управления, расположенными под ним, но когда я начинаю прокручивать, меню автозаполнения отстает от них.

Есть предложения?

РЕДАКТИРОВАТЬ:

Эточисто ошибка IE6.

alt text

alt text

Как видно, после прокрутки вниз автозаполнение отстает от других элементов управления.

Ответы [ 4 ]

2 голосов
/ 28 января 2011

Я мог бы решить проблему, заменив offsetHeight на scrollHeight в следующей строке (из jquery.bgiframe.js):

height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+

Это изменение решило ошибку для полей автозаполнения с вертикальными полосами прокрутки.Я не мог обнаружить регрессию в других типах диалогов (но я не проводил обширные тесты).

0 голосов
/ 01 декабря 2012

Я использовал комбинацию обоих параметров для высоты следующим образом:

'height:'+(s.height=='auto'?'expression(Math.max(this.parentNode.offsetHeight,this.parentNode.scrollHeight)+\'px\')':prop(s.height))+';'

Посмотрите на функцию макс. Теперь это хорошо без полосы прокрутки (более короткий список и более длинный список)

и теперь компонент автозаполнения выглядит отлично в IE6.

0 голосов
/ 28 марта 2011

Вы можете изменить offsetHeight на scrollHeight, как говорит Сигген, но я столкнулся с проблемами, когда из автозаполнения возвращается только 1 результат.1 результат помещается в окно размером всего 2 пикселя.Я нашел решение, хотя.Когда у вас есть data.length <2, вы должны использовать offsetHeight, а не scrollHeight. </p>

Вы должны изменить autocomplete.js.

Locate this code:
if($.fn.bgiframe)list.bgiframe();

и сделать это так:1006 *

if($.fn.bgiframe){
    if(data.length<2)
       list.bgiframe({height:'expression(this.parentNode.offsetHeight+\'px\')'});
    else 
       list.bgiframe();
}

Помните, этот код следует использовать в сочетании с исправлением Сиггена.

0 голосов
/ 25 января 2011

Вам необходимо изменить порядок z-index элементов формы (или их контейнеров), используя javascript. То есть, у «социального работника» самый низкий, у «кода DX» самый высокий z-индекс.

...