Jquery自动完成链接

时间:2011-07-03 04:27:58

标签: jquery autocomplete

我在我的网站上使用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来生成变量列表。

3 个答案:

答案 0 :(得分:1)

将您的回音标题行更改为回显<a href="index.php?id=$id>$title</a>;

答案 1 :(得分:1)

由于我不了解PHP,我无法帮助您使用服务器端代码,但是一旦理解了自动完成可以使用的不同数据,就应该很容易理解。

对于窗口小部件的数据源,您可以指定具有labelvalue属性的对象数组。您可以利用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”)