当其他AJAX请求在同一页面上运行时,JQuery UI自动完成失败

时间:2014-07-08 19:10:16

标签: jquery jquery-ui jquery-ui-autocomplete

所以我已经确定了问题,但无法修复它。我正在使用JQuery Autocomplete在网站上执行搜索,此搜索位于所有页面上。

刷新页面时,它会加载搜索框所在的页眉页面,然后开始加载小部件,现在加载小部件大约需要1-3秒,具体取决于有多少数据。

如果在加载这些小部件之前在搜索框中键入内容,则自动完成会查找内容并显示它们,但只要小部件完成加载,它们就会关闭自动完成。原因是它将焦点从自动完成输入框中移除。

我无法修改代码以查看是否所有窗口小部件都已加载,自动填充功能是否可以保持打开状态,即使它没有聚焦?

注意:数据已正确返回以进行自动完成,它会调用ajax&数据存在,但一旦加载整个页面(小部件)就会消失

自动填充代码:

$(".search-input-box").autocomplete({
    source: function( request, response ) { 
        var data = {t1: 1, t2: 2}; // 

        $.ajax({
            type: 'post',
            url: "/autocompletesearch",
            dataType: "json",
            data: data,
            beforeSend: function() { 
                // show some loading icon
            },
            success: function( data ) {
                response( $.map( data[0], function( item ) {
                        return {
                                label: item.t1,
                                value: item.t2
                        }
                }));
            }
        });
    },
    minLength: 3,
    position: { my : "right top", at: "right bottom" },
    open: function (event, ui){
        // some open code (nothing important)
    },
    close: function(){
        // some closing code (clean up)
    }, 
    focus: function() {
        return false
    },
    select: function(event, ui) {  
        // redirect to some page
            return false;
    },
    delay: 300
}).data( "ui-autocomplete" )._renderItem = function( ul, item ) { 
    return $( "<li>" )
    .append('<div class="item-list">' +
                '<b class="item-value">' + item.label + '</b>' +
            '</div>' )
    .data("ui-autocomplete-item", item)
    .appendTo( ul );
}

0 个答案:

没有答案