我从旧的基于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函数。越简越好。
答案 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;