使用搜索建议

时间:2015-04-01 00:29:58

标签: javascript jquery html ajax search

我有以下搜索建议脚本,当用户动态键入时,结果会更新。我想要的是,当用户点击其中一个建议时,它会将他们带到以下位置: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();
    });
});

在当前状态下,它只是打开searchPage.php的窗口,但没有在网址中考虑用户输入的内容。期望的结果是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>

2 个答案:

答案 0 :(得分:1)

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

document.getElementById('searchid').value

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

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

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

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

答案 1 :(得分:1)

尝试

// `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/