【问题标题】:JS - jquery (UI) - starting autocompletion from an external callJS - jquery (UI) - 从外部调用开始自动完成
【发布时间】:2011-08-24 17:51:08
【问题描述】:

如果我的远程数据源自动完成字段有问题:

$( "#birds" ).autocomplete({
        source: function(request, response) {
                $.ajax({
                    url: "xxxx",
                    dataType: "json",
                    data: {
                        y:  y,
                        x:  x,
                    },
                    success: function(data) {
                        response(data);
                    }
                });
            },
        minLength: 0,
        select: function( event, ui ) {
            alert( ui.item ?
                "Selected: " + ui.item.value + " aka " + ui.item.id :
                "Nothing selected, input was " + this.value );
        }
    }).live("click", function() {
         $(this).trigger('keydown.autocomplete');
    });

.live("click") 效果很好,但仅适用于第一次点击。如果我从列表中选择了一个结果并离开焦点点击事件被破坏。使用关键操作没有问题。 在控制台中看不到任何内容。

感谢您的帮助,诺玛

--> 对不起英语不好(2 年还不够)

【问题讨论】:

    标签: jquery jquery-ui autocomplete


    【解决方案1】:

    您使用的是哪个版本的自动完成功能?

    尝试使用更简单的代码

    $("#birds").autocomplete("xxxx", {
            width: 400,
            dataType: 'json',
            highlight: false,
            scroll: true,
            scrollHeight: 400,
            parse: function(data) {
                    var array = new Array();
                    for(var i=0;i<data.items.length;i++)
                    {
                            array[array.length] = { data: data.items[i], value: data.items[i], result: data.items[i].username };
                    }
                    return array;
            },
    
            formatItem: function(row) {                     
                    var name = '';
                    if (row.first_name && row.last_name)
                            name = '('+row.first_name+', '+row.last_name+')';
                    else if (row.first_name)
                            name = '('+row.first_name+')';
                    else if (row.last_name)
                            name = '('+row.last_name+')';
    
                    return row.username+' '+name;
            }
        });
    

    显然替换键值以匹配您的 json 输出

    【讨论】:

    • 我正在使用 1.8.13 但在您的解决方案中,我无法通过单击(或聚焦)元素作为事件来启动自动完成...?
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2012-04-23
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多