我有一个带有搜索建议的表单,当用户在输入中键入时,该表单就会出现。现在这个搜索建议是可点击的,用户可以点击特定的项目。当它点击该项目时,会把它们带到类似searchPage.php的地方吗?user_query=单击的项目的文本(即searchPage.php?user_query=html)。
我注意到的是,如果搜索建议项有一个特殊的字符,称为ASCII ISO 8859-1字符,它将忽略它,因此结果将是searchPage.php?user_query=
在任何情况下,它都不能是空白的,因为如果你点击一个项目,然后它会填充整个列表,这是一个糟糕的设计。
以下是搜索建议js:
$(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();
window.open('searchPage.php?user_query=' + decoded,'_self',false);
$('#searchid').val(decoded);
});
jQuery(document).live("click", function(e) {
var $clicked = $(e.target);
if (! $clicked.hasClass("search")){
var $name = $clicked.find('.name').html();
var decoded = $("<div/>").html($name).text();
}
});
$('#searchid').click(function(){
jQuery("#result").fadeIn();
});
});
以下是表格:
<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>
首先,正如GolezTrol所评论的,我会在任何地方使用UTF8:这是避免任何类似问题的最可靠的方法。
然后,在您这里的特定情况下,您可以尝试更换
var decoded = $("<div/>").html($name).text();
通过
var decoded = encodeURIComponent($("<div/>").html($name).text());
(不完全确定它是否正常工作…)