使用搜索建议

Working with search suggestion

我有以下搜索建议脚本,当用户动态输入时,结果会更新。我想要的是,当用户点击其中一项建议时,他们会转到以下内容:searchPage.php?user_query=what the user has typed in the input

脚本如下:

$(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();
    });
});

在当前状态下,它只打开 window 到 searchPage.php,但不考虑 url 中用户输入的内容。期望的结果是 searchPage.php?user_query=what ever you want

更新:

<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);

尝试

// `searchid` variable available to `keyup`, `click` event handlers
var searchid = "";
var input = $("#searchid");
var results = $("#results");

input.on("keyup", function(e) {

  searchid = e.target.value;
  results.text(searchid)

});

results.on("click", function(e) {
  var popup = window.open("searchPage.php?user_query=" 
                          + searchid, "_self", false);
});

jsfiddle http://jsfiddle.net/hxehczpq/1/