Высота multiselect по кол-ву пунктов?

Romaldo
На сайте с 10.02.2008
Offline
185
1240

Здравствуйте!

Столкнулся с претензией заказчика, что в админке, у доп. поля типа multiselect

маленький размер по высоте, и им приходится делать лишние движения скроллом,

не говоря уже о том, что не делая этих движений, непонятно, какие позиции там скрыты:

Как видно из изображения, независимо от количества пунктов, отображается только 4, остальное надо двигать скроллом.

Не скажу, что это ужасно, но действительно неудобно.

Единственное что я нашел, что вероятно *должно решить проблему - это файл - administrator/components/com_k2/models/extrafield.php

в котором есть фрагмент кода:

	
case 'multipleSelect' :
$output = JHTML::_('select.genericlist', $defaultValues, 'K2ExtraField_'.$extraField->id.'[]', 'multiple="multiple"', 'value', 'name', $active);
break;

Частично решить проблему удалось так:


case 'multipleSelect' :
$output = '<div class="myselect">'.JHTML::_('select.genericlist', $defaultValues, 'K2ExtraField_'.$extraField->id.'[]', 'multiple="multiple"', 'value', 'name', $active).'</div>';
break;

Плюс создал дополнительный стиль


.myselect select {
height: 200px;
}

Но это тоже не фонтан:

У некоторых блоков есть пустые строки, а некоторым не хватило высоты.

Как же все таки увеличить данный тип поля по высоте автоматически, исходя и кол-ва имеющихся значений?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

У селекта есть параметр size="" в него вписывается сколько отображать пунктов сразу.

Узнаём количество в селекте и прописываем его в size

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Romaldo
На сайте с 10.02.2008
Offline
185
#2
LEOnidUKG:
У селекта есть параметр size="" в него вписывается сколько отображать пунктов сразу.
Узнаём количество в селекте и прописываем его в size

Еще бы понять как посчитать, а главное куда вставлять сам size и прописывать значение.

В модели

case 'multipleSelect' :

$output = JHTML::_('select.genericlist', $defaultValues, 'K2ExtraField_'.$extraField->id.'[]', 'multiple="multiple"', 'value', 'name', $active);
break;

Куда бы я не вставил по принципу

, 'size=10' 

Бьет ошибку...

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3

Ну не обязательно в ПХП это вставлять. Можно посчитать на JS и применить к этому селекту. Если подключен jquery, то всё ещё быстрее делается.

nukex
На сайте с 11.05.2007
Offline
130
#4

Делается через jQuery в 2 строчки. Узнаем количество options, если больше/ меньше нужного -> ставим высоту

var count = $('#select option').length;

if (count > 5) $('#select').css('height','200px');

rbbumfirst
На сайте с 03.04.2009
Offline
87
#5

Предложите вашему заказчику Chosen - думаю он должен быть доволен.

Web developer (http://rudov.com). разработка на Go, ReactJS, React Native
S5
На сайте с 04.01.2010
Offline
77
#6

max- min-height? и будет в заданных пределах: если полей немного то с минимальной высотой, если полей много - растягиваться до максимальной, если ещё больше - появится скролл

Romaldo
На сайте с 10.02.2008
Offline
185
#7
sg552:
max- min-height? и будет в заданных пределах: если полей немного то с минимальной высотой, если полей много - растягиваться до максимальной, если ещё больше - появится скролл

Имеете в виду так?:

.myselect select {

min-height:100px;
max-height: 300px;
}

Все по 100px получается на выходе...

Romaldo
На сайте с 10.02.2008
Offline
185
#8

Короче так не получается, выбирается почему-то минимальное значение.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#9
romagromov:
Короче так не получается, выбирается почему-то минимальное значение.

Если есть не много финансов, стукните в личку вместе разберёмся.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий