Программирование > JavaScript & JScript
Поле ввода в форму как поле ввода адреса в броузере - с автоподстановкой
Veosys:
virka
Подойдет, а что таки есть готовое решение? Было бы очень благодарен!
virka:
Немного разгребусь, и может чего-нить смогу предложить.
Решение есть, наверное, всегда, не всегда готовое.
Для ASP нужен сервер. У Вас какая ОС?
Veosys:
virka
ОС Windows XP Pro. Сервер IIS. Так что с ASP никаких проблем.
virka:
Обещанного 3 года ждут, немного появилось времени, привожу код.
Теоретически все просто, как здесь уже и писали.
1.Формируется массив со значениями из базы данных.
2.Потом он сверяется с набираемой строкой, формируя массив для вывода в окно.
Для первого я использую ASP (PHP просто не знаю), делаете это любым из известных Вам способов. В моем случае это выглядит так:
#
#
Дальше все значения серверного объекта переносятся в клиентский массив
#
автоподстановка
var WT= new Array();
var count1=0;
WT[count1]=\'\';
count1++;
#
На этом серверная часть заканчивается.
Второй этап чисто клиентский.
Массив WT сверяется с набираемой строкой, формируя массив для вывода в окно.
В данном случае сверка жестко закреплена с именем поля (txtpole) и формы (form1), Вы делайте, как Вам удобно.
Функция formlist(), осуществляющая сверку, привязана к событию document.onkeyup
Вывод в окно осуществляется любым из известных Вам способов.
В данном случае вывод производится в элемент
#
// глобальные переменные
var boolflag=false;// включение/выкл
//
//создаем функцию формирования массива значений, соответствующих набранным символам из общего массива WT
function formlist()
{
tpv=form1.txtpole.value;
var RT=new Array();
if(tpv.length>0)// проверка на наличие символов в поле text
{
var count2=0;
var buf;
for(n=0;n0)?boolflag=true:boolflag=false;// если не найдено совпадающих значений, boolflag=false
return RT;
}
//функция cоздания списка автозаполнения и размещения его по адресу id=testid; вызов goontheplace()
function createlist(ar)
{
var str1="";
var topdiv=-1400;
var widthdiv=form1.txtpole.offsetWidth;
if(boolflag)
{
str1=\'\'+ar.join("
")+\'\';
topdiv=-3;
}
testid.innerHTML=str1;
goontheplace(widthdiv,topdiv);
}
//функция, отвечающая за ширину и координату y элемента автозаполнения testid
function goontheplace(w,y)
{
testid.style.width=w;
testid.style.top=y;
}
//функция размещения выбранного текста в поле text и удаления из поля видимости testid
function textgo(a)
{
form1.txtpole.value=a.name;
goontheplace(0,-1400);
}
//функция смены стилевых элементов текушего объекта
function colorline(a)
{
a.style.backgroundColor="#000066";
a.style.color="#ffffff";
}
//функция возврата стилевых элементов текушего объекта
function colorline_off(a)
{
a.style.backgroundColor="";
a.style.color="";
}
//функция запуска, привязана к событию onkeyup документа
function initar()
{
createlist(formlist());
}
document.onkeyup=initar;
#
Само тело документа:
#
.
#
Стили я не определял, хотя так сделать будет, конечно, удобнее.
В данном случае я рассмотрел только подстановку с помощью мышки, события клавиатуры (стрелочки и enter) остались в стороне, просто нет времени, разберетесь сами.
Я все это привожу только в плане идеи, результат действительно может не стоить труда, да и готовые сценарии предлагать - дело неблагодарное. Надеюсь, цели Ваши были именно понять, а не просто применить (иначе Вам надо было поместить свою тему в поиске скрипта). Приведенный мной код вполне рабочий в среде Windows Server IIS5+ и IE5+ в интернете и в интранете, но от конкретных условий может дорабатываться. Например, при большом количестве сверяемых значений можно разбить исходный массив на субмассивы по алфавиту и т.п.
Да, еще, документ должен иметь расширение .asp и должны быть правильно настроены IIS и ODBE.
База данных у меня Acces, для MySQL все тоже должно работать, но возможно есть некие нюансы, правда, по идее, они должны касаться только подключения к базе данных, на сам код это влиять не должно. Напишите, получилось у Вас чего-нибуть или нет.
Кстати, XP теперь содержит IIS? В первых версиях с ним были проблеммы, я из-за этого вернулся на 2000.
Навигация
Перейти к полной версии