JQuery Autocomplete故障

时间:2017-12-06 13:53:29

标签: jquery function

第一次发帖,所以我为任何错误道歉,如果之前已经回答过这个错误。

我可能会遗漏一些显而易见的事情,但此功能并未过滤变量列表。当我进入" 0"它没有显示任何内容,但是当我输入" j" (以及其他一些字符,例如" e"," c"" b")该函数显示数组中的所有内容。

<head>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script>
    $(function()
    {
        var data = [{"Part_no":"0001","Part_description":"Part 1"},{"Part_no":"0002","Part_description":"Part 2"}]

        $( "#project" ).autocomplete({
            minLength: 1,
            source: data,
            select: function( event, ui )
            {
                $( "#project" ).val( ui.item.Part_no );
                $( "#project-description" ).html( ui.item.Part_description );

                return false;
            }
        })
        .autocomplete( "instance" )._renderItem = function( ul, item )
        {
          return $( "<li>" )
            .append( "<div>" + item.Part_no + "<br>" + item.Part_description + "</div>" )
            .appendTo( ul );
        };
    });
    </script>
</head>
<body>
    <input id="project">
</body>

感谢您的关注。

2 个答案:

答案 0 :(得分:2)

我认为传递的数据格式不正确。根据此文档http://api.jqueryui.com/autocomplete/#option-source。您需要使用label和value属性传递对象的字符串或数组的数组。因此,您必须决定要在“零件号”或“零件描述”上搜索的内容。如果您只想在部件号上自动完成,请将其作为数组传递

         var data = ["001","002","003""];

为详细描述创建另一个数组

         var desc = ["Desc 1 " ,"Desc 2" , "Desc 3"];

因此,一旦用户选择了数据,您将获得数据的位置或可以映射到desc数组的值,以获得您想要使用的更多细节。

答案 1 :(得分:0)

这里的问题是这个过程正在寻找一个&#34;标签&#34;数组键。

更改&#34; Part_no&#34;的所有实例到&#34;标签&#34;解决了这个问题。我在PHP中使用array_map()做了这个,但如果有人知道如何在JQuery中执行此操作,我非常想知道。