我在我的网站上使用jquery的自动完成功能。现在它生成的菜单有你可以点击的链接。
但是,当您单击它们时,它们只是进入文本字段。我希望能够点击链接(或按回车键)并转到另一个页面,特别是更改URL的get变量。
为了使这更加复杂,下拉列表中的每个项目都由我的mysql数据库分配一个ID。每个项目应该转到的链接是index.php?id=$id
,其中$id
是数据库中的ID。
由于菜单中有数百个项目,如何更改当前代码以包含从我的数据库中重定向到index.php?id=$id
获取$id
的链接?
CODE: 来自http://jqueryui.com/demos/autocomplete/
的标准代码<script>
$(function() {
var availableTags = [
<?php
include 'connect.php';
$result=mysql_query("SELECT * FROM searchengine");
while ($row=mysql_fetch_assoc($result)){
$title=$row['title'];
$id=$row['id'];
echo "\"$title\",";
}
?>
];
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
P.S。我在jquery中使用php来生成变量列表。
答案 0 :(得分:1)
将您的回音标题行更改为回显<a href="index.php?id=$id>$title</a>;
答案 1 :(得分:1)
由于我不了解PHP,我无法帮助您使用服务器端代码,但是一旦理解了自动完成可以使用的不同数据,就应该很容易理解。
对于窗口小部件的数据源,您可以指定具有label
和value
属性的对象数组。您可以利用value
属性存储数据库中的id
,然后为select
事件定义事件处理程序,以将用户发送到正确的页面。
以下是一个例子:
$("input").autocomplete({
source: [
{ label: "Home", value: '3' },
{ label: "Admin", value: '4' },
{ label: "Search", value: '55' }
],
select: function(event, ui) {
/* Prevent the input from being populated: */
event.preventDefault();
/* Use ui.item.value to access the id */
window.location.href = "/index.php?id=" + ui.item.value;
}
});
这是一个工作(更简单)的例子:http://jsfiddle.net/j2JUb/
作为旁注,如果您有大量可能的结果,我会考虑使用自动完成功能提供的remote datasource选项。
答案 2 :(得分:0)
不确定您是否仍在尝试对此进行排序。这是我使用的solution
基本上,你得到(使用get方法)你正在传输的id(或搜索查询),然后根据它进行mysql查询。返回的其中一项是id,然后将其附加到您的部分网址。
例如,我需要攻击一个类别:
<script type="text/javascript">
function test(){
var i = document.createElement('input');
i.type = 'hidden';
i.name = 'cat';
i.value = cat;
document.getElementById("searchForm").appendChild(i);
}
</script>
我在表格后使用了它。这将类别名称附加为提交的URL的一部分。 (例如,&amp; cat = dfgdfg)。你可以用你的身份做同样的事。
最适合我的选项是,在提交时,将再次查询数据库,并使用id(以及重定向)将您带到需要的页面。
希望这是有道理的。
总结:处理它的方式是获取与您想要的页面相关联的ID,并将其附加到您的提交任务(例如,onsubmit =“search.php = $ id”)