2017-09-12 67 views
2

我在我的網站上實現了ajax實時搜索。它適用於所有瀏覽器,但是對於觸摸屏,它不顯示任何結果。我認爲觸摸事件未被檢測到由代碼,但即使在我的幾個淨搜索我不知道該怎麼do.Here是我的代碼和任何幫助,將不勝感激Ajax實時搜索不能在觸摸屏手機上工作

 $(document).ready(function() { 

     $("#search").keyup(function (e){ 

      var inp = String.fromCharCode(e.keyCode); 

      if (/[a-zA-Z0-9-_ ]/.test(inp)) { 

       $.ajax({ 

        url: '/search.php', 

        type: 'POST', 

        data: "keyword=" + $(this).val(), 

        success: function (data) { 

         data = $.parseJSON(data); 

         if (data['response'] == true) { 

          $("#search_results").html(data['html']).show(); 

         } else { 

          alert("Please try again."); 

         } 

        } 

       }); 

      } 

     }); 



     function hide_search_results(e) { 

      var container = $("#search_results"); 

      if (!container.is(e.target) && container.has(e.target).length === 0) { 

       window.displayBoxIndex = -1; 

       container.hide(); 

      } 

     } 



     $(document).mouseup(function (e) { 

      hide_search_results(e); 

     }); 

    }); 

回答

2

我相信,你還需要touchend事件,使你的腳本支持觸摸屏幕。

嘗試使用兩個事件.on()而不是.keyup()

$('#search').on('touchend keyup', function(e) { 
    ... 
}); 

作爲替代,您可以使用input事件,而不是touchend

+0

非常感謝它已經開始工作,但現在的問題是這條線var inp = String.fromCharCode(e.keyCode)。它沒有從觸摸屏獲取確切的輸入。你能幫我解決這個問題嗎? – zish

+0

對,也可能有問題,因爲'e.keyCode'是'keydown/keyup'事件的一個屬性,並且不會與其他事件一起工作。是否有必要以這種方式獲得輸入的文本?也許,'$(this).val()'也許很好?或者還有其他一些需要使用'String.fromCharCode(e.keyCode)'? – voloshin

+1

非常感謝您的時間。沒有具體的理由使用String.fromCharCode(e.keyCode)所以我已經改變它$(this).val()現在,一切工作正常。 – zish

相關問題