2017-09-12 14 views
2

私はウェブサイトでajaxライブ検索を実装しました。すべてのブラウザで機能しますが、タッチスクリーンに関しては結果は表示されません。タッチイベントは検出されていないと思いますコードによってそれでも、私のいくつかは、ネット上で検索すると、私はdo.Hereに私のコードであり、任意のヘルプは、私はあなたにもタッチをサポートしているあなたのスクリプトを作るためにtouchendイベントが必要であることを信じて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

を理解されるだろうか見当もつかない画面。

.keyup()の代わりに.on()という2つのイベントを使用してください。

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

代わりにあなたの代わりにtouchendinputイベントを使用することができます。

+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

関連する問題