如何修复jQuery中文本框的自动完成?

时间:2011-04-13 10:09:26

标签: jquery jquery-ui javascript-events autocomplete jquery-autocomplete

我使用 jquery.autocomplete.js 作为自动填充文本框。

我获得了按键事件的所有位置记录。
keypress事件我传递了位置文本框的文本值。

对于eq。我写文本“ Lo ”然后每当我从SQL数据库中获得新建议时,它都会获得以“Lo”开头的所有记录。

我的问题是。我在文本框下看到了两个,三个或更多列表框作为建议。 我写了.unautocomplete()方法,用于删除每个按键事件中的先前建议列表。 如何修复文本框中以前的unautocomplte列表..

在我的自动填充中,我看到自动填充建议列表显示了多个建议列表.. 如何解决这个问题..
下面我写了我的代码。
         

<script>
$('#<%= txtLocation.ClientID %>').onkeypress(function () {
  if ($('#<%= txtLocation.ClientID %>').val().length >= 1) {
    GetCitiesLikeList($('#<%= txtLocation.ClientID %>').val());
  }
});

function GetCitiesLikeList(objcity) {
    if (objcity != null && objcity != "") {        
         $.ajax({
            type: "POST",
            url: "http://www.myweburl.com/webservices.asmx/GetCitiesLikeList",
            data: "{ City : '" + objcity + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) { 
                if (msg.d != null && msg.d != "") {            
                    cities = msg.d.split(",");                    
                    $(".location").autocomplete(cities, {
                        matchContains: true,
                        minChars: 0
                    });
                }
                else
                 $(".location").unautocomplete();
            },
            error: function(xhr, ajaxOptions, thrownError) {return false;}
        });
    }
    else
        $(".location").unautocomplete();
}
</script>


查看此图像我的自动填充建议列表中出现了什么问题。
enter image description here

给我解决这个问题。
-Thanks
ABHI

2 个答案:

答案 0 :(得分:1)

您不需要使用独立的自动完成插件,因为它现在是jQueryUI的part

答案 1 :(得分:1)

我不确定我是否正确地说出了你所说的100%,但只是做了几件事:

  1. 您无需手动等待jQuery UI自动完成的keypress事件。当你在一个元素上调用.autocomplete()时,它已经为你做了。
  2. 自动完成功能还具有使用您在此处执行的AJAX处理项目填充的功能。
  3. 所以我猜你为什么要加倍列表是因为你在技术上再做一次自动完成(手动)。