powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN: фильтр для combobox
2 сообщений из 2, страница 1 из 1
ZEN: фильтр для combobox
    #35833778
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, уважаемые.
Возникла необходимость реализовать "фильтр" у combobox'a. Т.е. наполнение зависит от введенного значения. К примеру, есть список улиц. Если введено "мос", то должен быть отображен список улиц, начинающихся на "мос".
На данный момент реализовано так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<combobox id="cmbx" name="cmbx" editable="true" unrestricted="true" size="30" onkeyup="zenPage.cmbxKeyPress(zenThis);"/>

Method cmbxKeyPress(cmbx) [ Language = javascript ]
{
	var input = cmbx.findElement('input');
	var substr = input.value;
	cmbx.resetOptions()
	var res = zenPage.GetCmbxList(cmbx,substr)
	if (res=='1')
	{
		cmbx.showDropdown()
	}
	else 
	{
		alert('Error')
	}
	return
}

Method GetCmbxList(pCmbx As %ZEN.Component.combobox, pSubStr As %String) as %String [ ZenMethod ]
{
	s SubStr = $zcvt(pSubStr,"U")
	s idx="" f {
		s idx=$o(^PILIGRIM("TEST","STREETS",idx))
		q:idx=""
		i $e(idx, 1 ,$l(SubStr))=SubStr
		{
			s pValue = ^PILIGRIM("TEST","STREETS",idx)
			s pText = idx
			s tOption = ##class(%ZEN.Auxiliary.option).%New()
			s tOption.value = pValue
			s tOption.text = pText
			d %page.%AddChild(tOption) 
			d pCmbx.options.Insert(tOption)
		}
	}
	q $$$OK
}


В общем-то сама фильтрация работает нормально. А вот перемещение по списку (стрелками вверх-вниз) и поведение после выбора значения получается как-то "коряво".
Реализовывал ли кто-либо ранее подобную задачу? Как можно "причесать" приведенное решение.
...
Рейтинг: 0 / 0
ZEN: фильтр для combobox
    #35834687
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне кажется при больших объемах от корявости не уйдешь!!!
есть элемент dataCombo, но там нужно набрать первые несколько букв а потом нажать Ентер, только после этого отсветится искомый список,
у тебя же налету старница обращается к серверу при чем по каждому нажатию
могу только посоветовать:
1. отсвечивать выпадающий список только после нажатых нескольких букв;
2. самое главное, после того как ты первый раз загрузил выпадающий список, по второму нажатию кнопки ищи искомые значения уже на клиенте, т.е. javascript-ом, относительно уже загруженного списка. Я думаю так будет гораздо быстрее
удачи
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN: фильтр для combobox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]