考虑搜索中的特殊字符

时间:2015-04-05 20:17:44

标签: javascript php jquery html forms

我有一个带有搜索建议的表单,该表单在用户输入时显示。现在,此搜索建议是可点击的,用户可以点击特定项目。当它点击它的项目时,将它们带到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>

1 个答案:

答案 0 :(得分:0)

首先,正如GolezTrol评论的那样,我会在任何地方使用UTF8:这是推荐最可靠的方法来避免像你这样的任何问题。

然后,在您遇到的特定情况下,您可以尝试替换

  var decoded = $("<div/>").html($name).text();

通过

  var decoded = encodeURIComponent($("<div/>").html($name).text());

(并非绝对确定它能正常工作......)