Если вы хотите сохранить представление пользовательского интерфейса из поля выбора, то есть (довольно противный) способ сделать это. Это скорее ручной, и я бы не рекомендовал его вообще, но он мог бы достичь того, чего вы хотите:
Для каждой опции в списке вычислить «ширину» на основе символов в тексте этой опции. Это должно быть смутное представление пропорциональных ширин шрифта шрифта (например, ijtl = 1, aopg = 2, m = 2,5, примерно, такого рода вещи).
Все, что имеет значение определенного значения (оценка этого на основе вашего доступного пространства пользовательского интерфейса), разделяется на соответствующую точку (пробел или дефис в длинном слове - нужно написать алгоритм для этого). Повторяйте, пока у вас нет кусков по желаемому размеру. Вы должны получить массив для каждого параметра (некоторые будут только длиной 1, если они уже достаточно коротки).
Для каждой опции с соответствующим массивом длиной более 1 вставьте узлы опций сразу после оригинала, содержащие каждый из последующих фрагментов текста. Дайте им определенный класс (например, long-child
) и то же значение, что и оригинал. Вероятно, вы также должны дать некоторый визуальный индикатор, что это продолжение предыдущего элемента.
Поставьте обработчик события onchange
для выбора, который проверяет, имеет ли выбранный параметр класс long-child
. Если это так, он должен искать предыдущие параметры, чтобы найти первое, которое имеет такое же значение, и не имеют класс long-child
. Установите вместо этого значение selectedIndex.
Как я уже сказал, противно, но может достичь желаемого эффекта. Это может быть даже меньше кода, чем предложение Павки о том, чтобы перекатывать свои собственные;)
Похоже, вам нужно автообновить текстовое поле. –
Нет, мне нужен раскрывающийся список. Список определен, а не прогностический. –