如何在js文件中使用带有数组数组的jQuery自动完成插件作为源代码?

时间:2018-04-21 00:39:38

标签: jquery arrays jquery-ui-autocomplete

我从旧的基于pc的内容管理系统发布了html输出。基本上它是一个系统,技术作家输入文档“文章”,然后他们点击“发布”并选择格式,它发布到word,pdf,html等之一。它生成的文件之一是.js文件包含一个包含更多数组的数组,格式为:

Page=new Array();

Page[0]=new Array("string", "string", "string", "string", "page_109.htm");

Page[1]=new Array("string", "string", "page_115.htm");

page[2]=new Array("string", "string", "string", "string", "string", "reference_201.htm");

var PageCount=3; 

以上是实际文件的非常缩短示例,但结构完全相同。只是更多的页面。

我想使用jquery自动完成搜索(通过文本字段表单),以便当用户键入搜索字段时:

一个。自动完成功能搜索包含的js文件中的数组。 湾单击某个条目时,将加载数组中的最后一个索引,其中包含关联页面的文件名。 (例如,“109.htm”)

这可能吗?谁能提供一个例子?我是javascript / jquery的新手,并且负责将这个旧的发布系统的HTML输出(使用框架集)转换为响应。唯一剩下的就是让搜索工作,如果我能够自动完成工作,那将是 awesome 。我愿意使用任何插件或内置的jquery函数。越简越好。

1 个答案:

答案 0 :(得分:1)

这就是我想出的。如果多个页面共享相同的搜索词,则会出现问题。搜索" apple"或"骨架"。



        $( function() {

            Page=new Array();
            Page[0]=new Array("apples", "bananas", "cherries", "are", "page_109.htm");
            Page[1]=new Array("delicious", "but", "page_115.htm");
            Page[2]=new Array("vegetables", "vehicle", "sky", "skeleton", "sailboat", "reference_201.htm");

            var tags=[];
            for (i=0;i<Page.length;i++){
                for (n=0;n<Page[i].length-1;n++){
                    //ignore last item in list since it's the url
                    tags.push(Page[i][n]);
                }
            }
            $("#tags").autocomplete({
                source: tags,
                select: function( event, ui ) {
                    console.log(getPage(ui.item.label));
                    alert(getPage(ui.item.label));
                }
            });
            function getPage(tag){
                for (i=0;i<Page.length;i++){
                    for (n=0;n<Page[i].length;n++){
                        //include the last item in the list. return it if there's a match
                        if (tag === Page[i][n]){
                            return Page[i][Page[i].length-1];
                        }
                    }
                }
            }
        });
&#13;
<!DOCTYPE html>
<head lang="en">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>jQuery UI Autocomplete Test</title>
    <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>

    </script>
</head>
<body>
<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input id="tags">
</div>
</body>
&#13;
&#13;
&#13;