2017-09-12 40 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

相关问题