【问题标题】:jquery autocomplete not populating unless entered text is in the first result除非输入的文本在第一个结果中,否则不会填充 jquery 自动完成功能
【发布时间】:2011-05-18 00:53:35
【问题描述】:

我遇到了 jquery 自动完成插件的问题。我使用的文本框不会填充自动完成的结果,直到我输入数据的第一个条目中的值。在它填充之后,自动完成功能将按预期工作。

$(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);
    }
});
}

【问题讨论】:

    标签: javascript ajax jquery-plugins autocomplete


    【解决方案1】:

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

    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中有更多示例和更详细的描述。

    【讨论】:

    • 我认为这里的语法有一些问题。而且,在调试过程中,我注意到我直到第二次按键后才进入成功呼叫。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2014-01-07
    • 2013-08-26
    • 2011-03-14
    相关资源
    最近更新 更多