Jquery UI自动完成自定义数据无法按预期工作

时间:2015-08-04 16:46:03

标签: javascript jquery jquery-ui autocomplete

我正在尝试使用自定义数据进行自动填充,例如JQUI docs illustrate

这是我的Javascript代码:

$.ajax({
    type   : 'POST',
    url    : '/loadUserCompanyByAjax',
    dataType : 'json',
    success: function (result) {
        if (result.error == null) {
            var dataArray = [];
            $.each(result.companies,function(index,element){
                dataArray.push({
                    name : element.name,
                    id : element._id
                });
            });

            $( '.companyNameFromCreateMoe:empty' ).autocomplete({
                minLength: 0,
                source: dataArray,
                focus: function( event, ui ) {
                    $(this ).val( ui.item.name );
                    return false;
                },
                select: function( event, ui ) {
                    alert(ui.item.id);

                    return false;
                }
            })
                .autocomplete( "instance" )._renderItem = function( ul, item ) {
                return $( "<li>" )
                    .append( "<a>" + item.name +"</a>" )
                    .appendTo( ul );
            };
        }
        else {
            alert('AN ERROR HAS OCCURED DURING GETTING COMPANIES : ' + result.error);
        }
    }
});

问题在于,当我开始输入一封信时,如果我输入字母“e”,则不会发生任何事情......

enter image description here enter image description here

当我输入以下内容时,自动填充列表会消失..

enter image description here

如果我通过例子中给出的数组更改我的dataArray,它可以正常工作。

这里是我的dataArray的内容:

[
    {
        "name":"SARL salut ça va",
        "id":"55bdd266b1257b401d405ead"
    },
    {
        "name":"EURL Marco plomberie",
        "id":"55bde8b3e633d33c1ecfbecc"
    }
]

1 个答案:

答案 0 :(得分:0)

源列表对象应该有键&#34;标签&#34;和&#34;价值&#34;。 阅读source属性的文档:http://api.jqueryui.com/autocomplete/

你应该改变你的循环来创建像这样的

的dataArray
$.each(result.companies, function (index, element) {
    dataArray.push({
        label: element.name,
        value: element._id
    });
});

这是详细的小提琴。 http://jsfiddle.net/sqfwhxmj/1/

希望它有所帮助。