javascript - 使用搜索建议

标签 javascript jquery html ajax search

我有以下搜索建议脚本,当用户动态键入时,结果会更新。我想要的是,当用户单击其中一个建议时,会将他们带到以下内容:searchPage.php?user_query=用户在输入中键入的内容

脚本如下:

$(function () {
    $(".search").keyup(function () {
        var searchid = $(this).val();
        var dataString = 'search=' + searchid;
        if (searchid != '') {
            $.ajax({
                type: "POST",
                url: "search.php",
                data: dataString,
                cache: false,
                success: function (html) {
                    $("#result").html(html).show();
                }
            });
        }
        return false;
    });

    jQuery("#result").live("click", function (e) {
        var $clicked = $(e.target);
        var $name = $clicked.find('.name').html();
        var decoded = $("<div/>").html($name).text();
        $('#searchid').val(decoded);
    });
    jQuery(document).live("click", function (e) {
        var $clicked = $(e.target);
        if (!$clicked.hasClass("search")) {

            window.open('searchPage.php?user_query=', '_self', false);
        }
    });
    $('#searchid').click(function () {
        jQuery("#result").fadeIn();
    });
});

在当前状态下,它只是打开 searchPage.php 的窗口,但不会在 url 中考虑用户输入的内容。期望的结果是 searchPage.php?user_query=whatever youwant

更新:

<form method="get" action="searchPage.php" enctype="multipart/form-data" autocomplete="off">
    <input type="text" class="search" id="searchid" name="user_query" id="searchBar" placeholder="Search for courses"/>
    <input type="submit" id="searchButton" name="search" value="search" class="btn btn-danger" autocomplete="off"/>

    <div id="result"></div>
</form>

最佳答案

您可以像这样获取搜索字符串的值:

document.getElementById('searchid').value

因此,将其附加到您的查询中将如下所示:

window.open('searchPage.php?user_query=' + document.getElementById('searchid').value,'_self',false);

根据搜索框中的内容,您可能需要解决一些问题,例如包含 & 符号的搜索词(例如 ?user_query=search&find 只会出现为在服务器上搜索) - 您不想意外传递您打算成为搜索字符串一部分的额外参数。要解决这个问题,您可以转换该字符:

var searchString = document.getElementById('searchid').value.replace(/&amp;/g,'&')
window.open('searchPage.php?user_query=' + searchString,'_self',false);

关于javascript - 使用搜索建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380875/

相关文章:

javascript - 如何检查 id 值是否已经存在于对象数组中?

javascript - 如何使用 momentjs 解析日期?

javascript - 需要做一个垂直的时间轴

javascript - 检索更新的 JS 堆内存大小

javascript - 在加载时为预先选中的复选框运行 ng-change 函数

php - Firefox 过早自动关闭 HTML 元素 - IE 和 Chrome OK

html - 自定义字体无法在 Windows (Chrome) 上正确显示

javascript - 如何访问放置在其旁边的元素?

javascript - 自动完成功能不适用于使用数据表动态添加的行

javascript - 用于重复 div 的 jQuery 插件