Плагин автозаполнения JQuery на странице ASP.Net с C #

2

Я пытаюсь написать JQuery с помощью плагина AutoComplete, чтобы отобразить список имен для пользователя, когда пользователь начинает вводить имена (см. код ниже). Код работает нормально, если пользователь не начинает обратную замену, чтобы изменить имя введенного пользователя, что заставляет его записывать новые значения поверх существующих в результатах автозаполнения. Есть ли что-то, что я делаю неправильно здесь, возможно, используя функцию keyup для запуска автозаполнения или есть способ очистить существующие результаты автозаполнения, если пользователь начинает резервное копирование?

Вот код JQuery в файле разметки в Default.aspx:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="js/jquery-1.3.2.js" ></script>
    <script type="text/javascript" src="js/jquery.autocomplete.js" ></script>  
    <script type="text/javascript">
    $(document).ready(function() {
        $("#example").keyup(function() {
            $.ajax({
                    type: "POST",
                    url: "Default.aspx/GetCustomerNames",
                    data: "{ searchParam: '" + $("#example").val() + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                        $("#example").autocomplete(msg.d, 
                            { scroll: false, max: 10, width: 250, selectFirst: true });
                    }  
            });
        });
    });    
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>        
        Customer Name:  <input id="example" autocomplete="off" type="text" />      
    </div>
    </form>
</body>
</html>

И вот код в моем файле Default.aspx.cs codebehind, возвращающем данные:

[WebMethod]
public static string[] GetCustomerNames(string searchParam)
{
    List<string> data = new List<string>() { "Andrew", "Ramona", "Russ", "Russell", "Raymond", "Annette", "Anthony" };

    List<string> names = new List<string>();

    foreach (string s in data)
    {
        if (s.ToLower().StartsWith(searchParam))
        {
            names.Add(s);
        }
    }

    return names.ToArray();

}
Теги:
jquery-plugins

1 ответ

1
Лучший ответ

У меня создалось впечатление, что вы можете указать страницу поиска как первый параметр функции автозаполнения.

$(document).ready(function(){
  $("#example").autocomplete("Default.aspx/GetCustomerNames", { scroll: false, max: 10, width: 250, selectFirst: true });
});

Что-то вроде этого, вам может потребоваться выяснить правильные варианты использования, чтобы заставить его делать то, что вы хотите, но, по крайней мере, он не будет переустанавливать автозаполнение после каждой клавиатуры.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню