除非输入的文本在第一个结果中,否则jquery自动完成不会填充

时间:2011-05-17 15:22:40

标签: javascript ajax jquery-plugins autocomplete

我遇到了jquery autocomplete插件的问题。使用的文本框不会填充自动完成的结果,直到我输入数据的第一个条目中的值。填充完之后,自动完成功能将如何实现。

$(document).ready(function () {

});

function textChange() {

var callback = function (request, response) {
    var searchText = request.item;
    var searchField = $(".ddlist > option:selected").attr("value");
    $.ajax({
        type: "GET",
        dataType: "text",
        url: "SearchCallback.aspx?searchText=" + searchText + "&searchField=" + searchField,
        success: function (data) {
            var splitData = data.split(",");
            response(splitData);
        }
    });
}
$(".searchTextBox").autocomplete({
    source: callback,
    autoFill: true
})    
}
在玩了之后,我得到了以下代码,在我在文本框中使用onkeyup事件之前,我想我不需要它。我不知道这是否有效,但它现在正常工作。

$(document).ready(function () {
$(".searchTextBox").autocomplete({
    source: callback,
    autoFill: true
});
});

var callback = function (request, response) {
var searchText = request.term;
var searchField = $(".ddlist > option:selected").attr("value");
$.ajax({
    type: "GET",
    dataType: "text",
    url: "SearchCallback.aspx?searchText=" + searchText + "&searchField=" + searchField,
    success: function (data) {
        var splitData = data.split(",");
        response(splitData);
    }
});
}

1 个答案:

答案 0 :(得分:0)

初始化自动完成时,您必须使用回调作为源选项(在您的示例中,每次按下键时初始化自动完成):

var callback = function(request, response) {
    var searchText = request.item;
    // Set searchField somehow here
    $.ajax({  
         type: "GET",  
         dataType: "text",  
         url: "SearchCallback.aspx?searchText=" + searchText + "&searchField=" + searchField,
         success: function (data)
        {
            var splitData =  data.split(",");
            response(splitData);
        });      
    });
};

$( ".searchTextBox" ).autocomplete({
    source: callback,
    autoFill: true
});

documentation中还有更多示例和更详细的说明。