2015-04-01 121 views
0

我有以下搜索建议脚本,其中作为用户动态键入结果更新。我希望的是,当用户点击的建议之一是冲着他们以下几点: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> 
+0

可以包括'html'? – guest271314 2015-04-01 00:53:42

+0

当'click'ed时,哪个元素应该打开新的'window'? – guest271314 2015-04-01 01:06:39

+0

结果 – John 2015-04-01 01:08:38

回答

1

你可以搜索字符串这样的值:

document.getElementById('searchid').value 

所以,附加到您的查询看起来是这样的这个:

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

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

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

。我按照它,但是当我点击它给我以下网址searchPage.php?user_query =忽略搜索字符串在一起 – John 2015-04-01 01:27:27

+1

看着你的HTML我注意到,你有两个ID在你的输入字段 - 你应该只有一个(JS可能没有找到输入字段 - 你可以在这里提供JS错误以获得更多反馈)。上面的代码假设它是'searchid',但是你可以改变它到任何你更新你的HTML(我猜猜无论是searchid还是searchBar):'' – pherris 2015-04-01 01:34:23

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/