带有链接的 JQuery 自动完成

Posted

技术标签:

【中文标题】带有链接的 JQuery 自动完成【英文标题】:JQuery auto complete with links 【发布时间】:2015-06-17 00:49:46 【问题描述】:

我正在建立一个网站,该网站使用 JQuery 的自动完成功能向用户提供有关页面的建议。我将页面 ID 和标题存储在 SQL 数据库中(使用 PDO 连接)。目前,我已经让自动完成功能正常工作,但是,我完全不知道如何让自动完成列表变成可点击的链接,这些链接根据数据库中的页面 ID 将用户引导到相关页面。

这是我的 search.php 文件

    <?php
require('includes/connect.class.php');
if (isset($_GET['term'])) 
        $return_arr = array();
        try 
                $stmt = $conn->prepare('SELECT id, locationName FROM locations WHERE locationsName LIKE :term');
                $stmt->execute(array(
                        'term' => '%' . $_GET['term'] . '%'
                ));
                while ($row = $stmt->fetch()) 
                        $return_arr[] = $row['locationName'];
                
        
        catch (PDOException $e) 
                echo 'ERROR: ' . $e->getMessage();
        
        echo json_encode($return_arr);

?>

和我的 JavaScript

$(function() 
    $(".locationlist").autocomplete(
        source: "search.php",
        minLength: 1
    );            
);

数据库如下所示

Locations
|---ID---||---locationName---|
|   1    ||       Test1      |
|   2    ||       Test2      |
 ----------------------------

我做了一些研究,我认为我需要修改 JQuery 来显示对象数组。我不太确定该怎么做。

让我的自动完成列表从 SQL 数据库中获取页面 ID 并成为可点击链接的最佳方法是什么?

【问题讨论】:

这是什么$(function locationsearch() 对不起@JqueryKing,这只是我函数文件的摘录。我更新了我的问题以避免混淆。 【参考方案1】:

您实际上并不需要那里的可点击链接。您可以在自动完成的 select event 中重定向页面,您可以在其中访问选定的 item 对象:

ui(类型:对象): item(类型:对象): 一个具有labelvalue属性的对象。

ui.item.value 将是您的 PHP 生成的页面 ID

$(".locationlist").autocomplete(
    source : "search.php",
    minLength: 1,
    select : function(event, ui)
        // You may need to change this part, as I don't know the exact values:
        location.href = "http://your-site.com/" + ui.item.value;
    
);   

至于你的 PHP,你可以像这样修改输出数组:

while ($row = $stmt->fetch()) 
    $return_arr[] = array(
        'value' => $row['ID'],
        'label' => $row['locationName']
    );

【讨论】:

您知道有什么方法可以在页面重定向时阻止 ID 号显示在文本区域中吗? 我不太确定您指的是什么 textarea。您可能需要展示您的 html 和整个代码。 对不起,用户输入搜索查询的搜索框。当用户点击想要的结果时,ID号会显示在搜索框中 尝试反转$return_arr[]数组(先设置label再设置value 不幸的是,这不起作用。我的代码很乱。我想我需要添加一个隐藏的文本框来存储页面 ID。如果我成功了,我会报告。

以上是关于带有链接的 JQuery 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

带有检查名称的 PHP 文件的 jQuery 自动完成

JQuery 自动完成文本框 asp.net 限制结果

带有 ASP.NET 问题的 Jquery 自动完成

带有json响应的jquery自动完成

带有数据库的jquery ui自动完成

需要使用 jQuery 的带有复选框的(自动完成 + 多选)控件