изготовление сайтов

Cоздание сайтов различной сложности

. ... разработка сайта; цена бизнес сайта! Cоздание сайтов быстро... заказать сайт. создание web сайтов красиво! создание web сайтов быстро, сайт недорого. оптимизация; создание бизнес сайта. корпоративный сайт, веб решения: web дизайн студия

создание web сайтов дешево

. ! ИТ аутсорсинг! разработка web-дизайна, Cоздание сайтов качественно. MSSQL: создание сайта: ASP! Разработка

создание web сайтов качественно

. : C#... Самые маленькие цены и сроки реализации сайтов! Cоздание сайтов. Cоздание сайтов дешево

Аутсорсинг

. , ASP.NET, Бизнес сайт. разработка бизнес сайта. создание продвижение сайтов! дизайн сайта. web-дизайн. заказ сайта! цена и стоимость сайта... стильный сайт; Цена веб-сайта. цена web-сайта. продвижение сайта

сайты дешево

. ... outsourcing... цена сайта: Cоздание сайта концепция дизайна. : Microsoft SQL Server 2005! стоимость сайта! Создать сайт! .NET: веб-дизайн, разработка сайтов Cоздание сайтов красиво.

создание сайта

. ! it outsourcing; Разработка сайта... Оптимизация, продвижение сайтов... разработка сайта, раскрутка сайта, Бизнес сайт
C#... Cоздание сайта... стильный сайт... Cоздание сайтов качественно! цена web-сайта заказать сайт. ! концепция дизайна, Цена веб-сайта; создание web сайтов дешево... цена сайта. корпоративный сайт... .NET! цена и стоимость сайта, заказ сайта; стоимость сайта: разработка сайта; Аутсорсинг

изготовление сайтов

. ! Бизнес сайт! Бизнес сайт, ИТ аутсорсинг... Самые маленькие цены и сроки реализации сайтов; Cоздание сайтов красиво, создание web сайтов качественно. дизайн сайта; Создать сайт

Разработка сайта

. : создание web сайтов красиво. Cоздание сайтов быстро. Microsoft SQL Server 2005! веб-дизайн, разработка сайтов. раскрутка сайта

создание web сайтов быстро

. , it outsourcing

ASP

. ... Оптимизация, продвижение сайтов, разработка сайта... веб решения! разработка бизнес сайта сайт недорого. , оптимизация... ASP.NET. Cоздание сайтов. создание сайта MSSQL. ! продвижение сайта Cоздание сайтов различной сложности. разработка web-дизайна. ! создание сайта; цена бизнес сайта! создание продвижение сайтов! outsourcing. Cоздание сайтов дешево... сайты дешево; web-дизайн создание бизнес сайта. ! Разработка... web дизайн студия
IT реальность - наша профессия
 Портфолио 
 Услуги и решения 
 Публикации и статьи 
 Контакты 

ИТ аутсорсинг создание web сайтов качественно. ; создание продвижение сайтов; .NET

MSSQL

. : Cоздание сайтов качественно дизайн сайта. . заказ сайта! Cоздание сайтов быстро! создание сайта: Разработка сайта, Аутсорсинг; разработка сайта... ASP.NET! Бизнес сайт... цена бизнес сайта; Разработка. Цена веб-сайта! outsourcing. создание web сайтов быстро! Оптимизация, продвижение сайтов: цена сайта

веб решения

. . концепция дизайна. создание бизнес сайта, Cоздание сайтов: стоимость сайта! сайты дешево: заказать сайт! создание сайта; web дизайн студия! Cоздание сайтов красиво! разработка бизнес сайта

Cоздание сайтов дешево

. , разработка сайта, корпоративный сайт! изготовление сайтов. веб-дизайн, разработка сайтов сайт недорого.

C#

. : цена и стоимость сайта; создание web сайтов дешево! раскрутка сайта! web-дизайн

оптимизация

. ... продвижение сайта; it outsourcing... цена web-сайта... ASP; стильный сайт: Бизнес сайт; разработка web-дизайна; Cоздание сайта, Cоздание сайтов различной сложности: Создать сайт: Microsoft SQL Server 2005 Самые маленькие цены и сроки реализации сайтов. . создание web сайтов красиво

AJAX - подстановка слов в текстовое поле

Главная страница / Публикации и статьи / Технологии / AJAX - подстановка слов в текстовое поле

Данная статья посвящена созданию возможности подстановки слов в текстовое поле. Использование такой возможности позволит пользователю сэкономить время, необходимо при вводе информации (например: ввести несколько первых букв названия города, и потом в появившемся списке выбрать название нужного города).

Для реализации возможности списка подстановки используется технология ASP.NET 2.0.

Первое, что необходимо – это создать проект веб-приложения. Для этого в Visual Studio 2005 выберите в меню пункт File\New\Web Site. В появившемся окне выберите заготовку ASP.NET Web Site, в местоположении проекта введите, например, «C:\Inetpub\wwwroot\AutoCompleteWords», выберите язык Visual C# и нажмите кнопку OK.

Теперь займемся созданием списка автоматической подстановки, для этого в каталоге App_Data проекта создадим файл Words.txt, в который поместим набор слов, Вы можете поместить в него любые слова, но для примера поместим в него некоторые слова из глоссария .NET SDK:

access control list (ACL)
ADO.NET
aggregate event
alpha channel
anchoring
antialiasing
application base
application domain (AppDomain)
application manifest
application state
ASP.NET
ASP.NET application services database
ASP.NET mobile controls
ASP.NET mobile Web Forms
ASP.NET page
ASP.NET server control
ASP.NET Web application
assembly
assembly cache
assembly manifest
assembly metadata
assertion (Assert)
association class
ASSOCIATORS OF
asynchronous method 
attribute
authentication
authorization
autopostback

После создания файла, содержащего слов для подстановки, создадим саму веб-форму, которая будет содержать текстовое поле с возможностью подстановки. Для этого в файл Default.aspx, который содержится в созданном проекте, поместим следующий код:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="AutoComplete" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Текствое поле с подстановкой</title>

    <script type="text/javascript">
     function TextKeyDown(WhoSend,WhoGet) //Обработка нажатий кнопок
        {
            var e=event;
            if(e.keyCode==13)
            {
                e.returnValue =false;
                return false;
            }
            else if(e.keyCode==27)
            {
                document.getElementById(WhoGet).style.display='none'
                e.returnValue =false;
            }
        }
        function SendData(WhoSend,WhoGet) //Отправка данных на сервер и 
проверка нажатых клавиш в текстовом поле
        {
            if (WhoSend.value.length<2){return false;}//Ничего не делать, 
если введено меньше 2-х символов
            var objGet=document.getElementById(WhoGet);
            var e=event;
            if (e.keyCode==40) //Нажата стрелка вниз
            {
                if (objGet.selectedIndex<objGet.options.length-1)
                    objGet.selectedIndex++;
                else 
                    objGet.selectedIndex=0;
                return false;
            }else if (e.keyCode==38) //Нажата стрелка вверх
            {
                if (objGet.selectedIndex>0)
                    objGet.selectedIndex--;
                else 
                    objGet.selectedIndex=objGet.options.length-1;
                return false;
            }else if (e.keyCode==13) //Нажат ввод
            {
                ReturnValueToTextBoxs(objGet,WhoSend)
                return false;
            }else if (e.keyCode==27) //Нажат Escape
            {
                objGet.style.display='none';
                return false;
            }
            //Выполнение запроса на сервер и отображение списка подстановки
            var offset=WebForm_GetElementPosition(WhoSend) //Получение 
координат текстового поля
            CallServer(WhoSend.value,WhoGet); //Запрос на сервер
            objGet.style.top =offset.y+WhoSend.offsetHeight+'px';
            objGet.style.left =offset.x+'px';
            objGet.style.width =offset.width+'px';
            objGet.style.display='block'; //Отображение списка на экране

        }
        function ReceiveServerData(args, context) //Поучение данных с сервера
        {
            if (args.length=0){return false;} //Ничего не делаем, если ничего не получено
            var select=document.getElementById(context)
            var mass=args.split("\t"); //Превращаем строку в массив
            for (var i=select.length-1;i>-1;i--) //Очищаем список
                select.options[i]=null;
            for (var i=0;i<mass.length-1;i++)
            {
                select.options[i]=new Option(mass[i]); //Заполняем список
            }
            if (i!=0)
                select.size=i+1; //Выставляем размер с списка

        }        
        function ReturnValueToTextBoxs(SelectObj,TextObj)//Заполняем текстовое поле
        {
            TextObj.value=SelectObj.options[SelectObj.selectedIndex].text;
            TextObj.focus();
            SelectObj.style.display='none';
        }
        function SelectItem(select,textbox,mouse) //Обрабатываем события списка подстановки
        {
            TextObj=document.getElementById(textbox);
            SelectObj=select;
            if (mouse==true)
            {
                
                ReturnValueToTextBoxs(SelectObj,TextObj);
            }
            else
            {
                var e=event;
                if (e.keyCode==13)
                {
                    ReturnValueToTextBoxs(SelectObj,TextObj);
                 
                }
                else if(e.keyCode==27)
                {
                    TextObj.focus();
                    SelectObj.style.display='none';
                }
                
            }
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server" Width="477px"
AutoCompleteType="Disabled"></asp:TextBox>
            <asp:ListBox ID="Select1" runat="server" Style="position: 
absolute; display: none;">
            </asp:ListBox>
        </div>
    </form>
</body>
</html>


А в файл Default.aspx.cs поместим исходный код обработчика событий веб-формы:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

public partial class AutoComplete : System.Web.UI.Page, ICallbackEventHandler
{
    string CallbackResult; //Здесь хранится результат callback
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            RegisterClientScript();
            TextBox1.Attributes.Add("onkeyup",
			String.Format("SendData(this,'{0}');", Select1.ClientID)); //Подключаем 
обработчик нажатия клавиш
            TextBox1.Attributes.Add("onkeydown",
			String.Format("TextKeyDown(this,'{0}',event)", Select1.ClientID)); 
//Обработка нажатия клавиш
            Select1.Attributes.Add("onkeydown",
			String.Format("SelectItem(this,'{0}',false);", TextBox1.ClientID)); 
			//Событие списка
            Select1.Attributes.Add("ondblclick",
			String.Format("SelectItem(this,'{0}',true);", TextBox1.ClientID)); 
			//Событие списка
        }
    }
    /// 
    /// Процедура регистрации клиентских скриптов обратного вызова
    /// 
    private void RegisterClientScript()
    {
        ClientScriptManager m = Page.ClientScript;
        string cbReference = m.GetCallbackEventReference(this, "args", 
"ReceiveServerData", "context");
        string strCallback = "function CallServer(args,context){" +
cbReference + ";}";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), 
"CallServer", strCallback, true);
    }
    /// 
    /// Функция возвращающая результат callback
    /// 
    public string GetCallbackResult()
    {
        return CallbackResult;
    }
    /// 
    /// Процедура вызываемая клиентским скриптом
    /// 
    public void RaiseCallbackEvent(string eventArgument)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        FileStream file = new
          FileStream(Server.MapPath("~/App_Data/words.txt"), FileMode.Open,
          FileAccess.Read);
        StreamReader reader = new StreamReader(file);
        String word;
        while ((word = reader.ReadLine()) != null)
        {
            if (word.Length >= eventArgument.Length)
                if (eventArgument.ToLower() == word.Substring(0,
 eventArgument.Length).ToLower())
                {
                    sb = sb.Append(word);
                    sb = sb.Append("\t");
                }
        }
        file.Close();
        CallbackResult = sb.ToString();
    }
}


Теперь запустим проект на выполнение. На экране появится веб-страница, содержащая одно единственное текстовое поле.


Введем в него слово as, после этого экран должен принять примерно такой вид:


Для того, чтобы перейти на какое-нибудь слово из списка подстановки, нажимаем стрелку вниз на клавиатуре. Чтобы выбрать слово, нажимаем ввод, также выбор слова можно осуществить двойным щелчком.
В мире много апельсинов,
а такой как этот  -  
только мы!
У нас всегда найдется время связаться с Вами!
Заполните, пожалуйста, форму обратной связи.
Это займет всего 30 секунд времени.
Ваше имя: *
Компания:
E-mail:
Телефон: *
Вопрос: *
Введите код: *
(защита от спама)
Обратите внимание на то, что поля, отмеченные *, обязательны для заполнения.

Пишите:
Cоздание сайтов качественно; заказать сайт! Cоздание сайтов различной сложности цена и стоимость сайта. ; it outsourcing! разработка web-дизайна, цена сайта! создание бизнес сайта. .NET! web дизайн студия. MSSQL, цена бизнес сайта: корпоративный сайт; Разработка Бизнес сайт. , Бизнес сайт, оптимизация: Cоздание сайтов! создание сайта: Аутсорсинг

Цена веб-сайта

. веб-дизайн, разработка сайтов. . ASP. заказ сайта: продвижение сайта... создание сайта... ASP.NET: создание продвижение сайтов, создание web сайтов качественно: web-дизайн. разработка бизнес сайта, раскрутка сайта... Оптимизация, продвижение сайтов... Разработка сайта, сайты дешево; Cоздание сайта Cоздание сайтов красиво. : разработка сайта, изготовление сайтов... Создать сайт разработка сайта. : ИТ аутсорсинг. Самые маленькие цены и сроки реализации сайтов: сайт недорого. стоимость сайта. стильный сайт! создание web сайтов дешево, цена web-сайта создание web сайтов красиво. ! концепция дизайна. outsourcing. Microsoft SQL Server 2005: дизайн сайта: Cоздание сайтов дешево. Cоздание сайтов быстро, C#. создание web сайтов быстро, веб решения
цена бизнес сайта; ASP, продвижение сайта. корпоративный сайт... Cоздание сайтов качественно, веб решения! создание сайта; Бизнес сайт! разработка бизнес сайта, стоимость сайта. дизайн сайта. Бизнес сайт. разработка web-дизайна! цена и стоимость сайта

.NET

. разработка сайта. , Cоздание сайтов, цена web-сайта; ASP.NET outsourcing. , разработка сайта. создание бизнес сайта; Создать сайт: Cоздание сайтов красиво! Microsoft SQL Server 2005! создание web сайтов дешево! веб-дизайн, разработка сайтов: создание продвижение сайтов! раскрутка сайта; Самые маленькие цены и сроки реализации сайтов

Аутсорсинг

. ! заказать сайт, Разработка сайта: сайт недорого: создание web сайтов красиво... web-дизайн: Cоздание сайтов дешево! web дизайн студия. Цена веб-сайта... Cоздание сайтов быстро. оптимизация, сайты дешево, изготовление сайтов. стильный сайт: C#! Разработка

Cоздание сайта

. ; создание web сайтов качественно

it outsourcing

. ; Cоздание сайтов различной сложности: цена сайта... заказ сайта; создание web сайтов быстро! ИТ аутсорсинг: MSSQL; создание сайта, концепция дизайна! Оптимизация, продвижение сайтов