2015-04-05 25 views
1

我有一個搜索建議的形式,顯示爲用戶鍵入輸入。現在這個搜索建議是可點擊的,用戶可以點擊一個特定的項目。當它點擊它時,將它們帶到類似於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> 
+0

「ASCII更換

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

ISO 8859-1「是西方大部分地區使用的標準拉丁字符集。你能提供一個JSFiddle嗎?見http://en.m.wikipedia.org/wiki/ISO/IEC_8859-1 – dartonw 2015-04-05 20:35:50

+0

你的問題是什麼;爲什麼字段是空白的?如何禁止空查詢? – chris85 2015-04-05 20:56:09

+0

這可能是您的文檔,表單或此過程的另一部分不使用ISO 8859-1,而是另一種編碼。爲了使它工作,你必須在任何地方都有相同的編碼。即使這樣,我也會在任何地方使用UTF-8,因爲它支持最廣泛的字符而不需要轉義它們。 – GolezTrol 2015-04-05 21:04:53

回答

0

首先,如GolezTrol評論,我會在任何地方使用UTF-8:這是recommendend最可靠的方法以避免像你的問題。

然後,在你這裏的特殊情況下,可以嘗試通過

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

(沒有絕對的把握,它工作正常...)

+0

感謝您的建議。我將如何在任何地方使用UTF8? – John 2015-04-05 21:39:36

+0

無處不在使用UTF8:就是說您的HTML部分已經以UTF8格式。換句話說,您的.html(或.php及其他)源文件應該是UTF8編碼(不含BOM),而不是ANSI,而ANSI通常是許多編輯器的默認編碼。例如:如果您使用的是Notepad ++,您可以打開文件並從菜單中選擇「編碼|轉換爲UTF-8(不帶BPM)」並保存。那麼你的JS片段現在應該可以正常工作。 – cFreed 2015-04-05 22:23:48