Jquery:带标签的自动填充

时间:2014-09-21 05:44:26

标签: javascript jquery autocomplete

我正在努力学习网站开发。 在学习jquery的自动完成功能时,我尝试放入标签。

    function autocomplete (data) {
        var data = data.toString();
        var availableTags = data.split(',');
        var autocompleteData = [];
        for (var i = 0; i < availableTags.length; i++){
            autocompleteData[i] = {};
            autocompleteData[i].label = i.toString();
            autocompleteData[i].value = availableTags[i];
        }
        $("#tags").autocomplete({
            source: autocompleteData,
            select: function (event, ui) {
                printautocomplete(event, ui)
            }
        });
    };

autocomplete [i] .value是一个有效的字符串。

 autocompleteData[0]
 Object {label: 0, value: "Peter"}

但是,我没有看到任何建议。 我使用API​​的方式有什么问题?

API说: &#34;数组:数组可用于本地数据。有两种支持的格式:

An array of strings: [ "Choice1", "Choice2" ]
OR An array of objects with label and value properties: [ { label: "Choice1", value: "value1" }, ... ]

标签属性显示在建议菜单中。当用户选择项目时,该值将插入到input元素中。如果只指定了一个属性,则它将用于两者,例如,如果仅提供值属性,则该值也将用作标签。 &#34; 谢谢。

3 个答案:

答案 0 :(得分:0)

我对您的代码中的第2行(var data = String()data;)持怀疑态度,我会使用:var data = data.toString();

但是如果您确定autocompleteData元素确实具有有效的字符串,那么我最好的猜测是,您可能忘记将'#tags' id赋予您的html entry字段元素。

最后,如果不是这样,要进行问题排查,我会尝试从您要传递到select:的对象中的autocomplete()选项中删除$("#tags").autocomplete(...选项,以便开始:document.ready()只传递了源选项。

要检查的另一件事是运行代码。有可能需要'#tags'函数来确保将自动填充功能添加到ID为{{1}}的DOM元素时,该元素已经创建。

答案 1 :(得分:0)

自动填充功能正常。它不是完成&#34;值&#34;而是完成&#34;标签&#34;。 因此,当我输入&#34; 1&#34;时,它会建议&#34; 1&#34;,&#34; 10&#34;,&#34; 11&#34;等。

Autocomplete applying value not label to textbox回答如何更改为按值。

答案 2 :(得分:0)

$('#sidebarSearch').autocomplete(
{
source: function(query, result)
    {
    var query = $('#sidebarSearch').val ();
    $.ajax(
        {
        url:"sidebarSearchFetch.php",
        method:"POST",
        data:{query:query},
        dataType:"json",
        success:function(data)
            {
            result($.map(data, function(item)
                {
                return {
                       label: item.name,
                       value: item.usrId
                      };
                }));
            }
        })
    },
appendTo: "#sidebar-form"
});