Ящик для автозаполнения JQuery - авторазмер - PullRequest
3 голосов
/ 27 мая 2011

Я использую jquery автозаполнение комбобокс .Я хотел бы, чтобы он автоматически изменял размер до размера, который он заменяет.Вместо этого в настоящее время по умолчанию используется только одна ширина, а не ширина содержимого, как это происходит по умолчанию со списком html.

Спасибо за любую помощь ...

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Это моя «открытая» опция для автозаполнения, с авторазмером (autowidth):

            open: function(e,ui) {
                var autoData = $(this).data('autocomplete');
                var reserText = ",de,del,el,la,las,los,en,";

                autoData.menu.element.css({'width':'' + anchoMinimo + 'px'});

                autoData.menu.element.find('li').each(function() {
                   var fila = $(this);
                   var texto = fila.text().toLowerCase().replace(autoData.term.toLowerCase(), "<b>" + autoData.term.toLowerCase() + "</b>");
                   var autoText = "";

                   texto = texto.split(" ");

                   for( i = 0; i < texto.length; i++){

                       if((reserText.indexOf( texto[i].replace("<b>","").replace("</b>","") ) != "-1") && (i > 0)){
                           autoText += texto[i] + " ";
                       }else if( texto[i].substring(0,3) == "<b>" ){
                           autoText += "<b>" + texto[i].charAt(3).toUpperCase() + texto[i].substring(4) + " ";
                       }else{
                           autoText += texto[i].charAt(0).toUpperCase() + texto[i].substring(1) + " ";
                       }
                   }

                   autoText = autoText.replace(" De "," de ").replace(" Del "," del ").replace(" Los "," los ").replace(" El "," el ").replace(" En "," en ").replace(" La "," la ").replace(" Las "," las ");

                   fila.find('a').text("");
                   fila.find('a').append( autoText );

                   // Ahora vamos a calcular el ancho de la cadena más ancha para saber qué ancho tiene que tener el combo.
                   ancho = autoText.length * 5; // Con esta fuente de letra, en IE, etc...

                   if(ancho > anchoFilaDestinos){
                       anchoFilaDestinos = ancho;
                   }
                   // Fin del cálculo del ancho.

                   fila.find('a').css({'white-space':'nowrap','width':'276px','text-align':'left'});

                   if( fila.index()%2 > 0 ){
                       fila.find('a').css({'background-color':'#EFEFEF'});   
                   }
                }

См. Часть из "// Ahora vamos a calcule el ancho de la cadena más ancha para saber quéancho tiene que tener el combo. "

Надеюсь, это поможет вам.

1 голос
/ 22 февраля 2012

Я отправил ответ именно для этого сценария, в котором размер инициируемых комбинированных блоков изменяется по ширине списка выбора, который они заменяют.

Попробуйте эту ссылку на другой поток .

Используется ширина элемента выбора, а не текст в списке.

Я также смог расширить это с помощью функций для обработки шрифта document.body.изменения размера тоже.

С уважением.

...