Плагин автозаполнения JQuery на странице ASP.Net с C # - PullRequest
2 голосов
/ 27 октября 2009

Я пытаюсь написать JQuery, используя плагин AutoComplete, чтобы отобразить список имен для пользователя, когда пользователь начинает вводить имена (см. Код ниже). Код работает нормально, если пользователь не запускает backspace, чтобы изменить имя введенного пользователя, что заставляет его записывать новые значения поверх существующих в результатах автозаполнения. Есть ли что-то, что я делаю не так, может быть, с помощью функции 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>

А вот код в моем файле code.hp.aspx.cs, возвращающий данные:

[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();

}

1 Ответ

1 голос
/ 11 декабря 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...