2016-05-09 21 views
5

tespit edin. Masaüstü ve tabletlerde (iPad, Android veya yüzey) başlayan bir Web Uygulaması geliştiriyoruz. Şimdi sayı girişleri için kendi klavyemizi oluşturuyoruz. Odağı bir fare çubuğu ile bir giriş alanına ayarladığınızda, müşteri klavyesi doğru açılır. Ancak, odağı dokunmuş bir tıklama (tablet) ile girdiye ayarladığınızda, varsayılan klavye de açılır. Bizim fikrimiz, bir fare tıklaması veya dokunmuş bir tıklama olsaydı, tespit etmek. Bir dokundu tıklama ise, biz girişine salt okunur = "true" özelliğini ayarlayın, böylece bir masaya varsayılan klavye slayt olmaz.Girdiye dokunulduysa (tablet) veya tıklandığında (fare)

hangi "türü algılamak veya kontrol etmek için bir yol var mı "tıklatılmıştı (dokundu ya da fare).

cevap

3

Her iki eylemler touchend için bir olay tanımlayabilir ve click ardından olayın türünü kullanarak tetiklenir hangisinin algılamak: Bu yardımcı olur

$('#element-id').on('click touchend',function(e){ 
 
    if(e.type=='click') 
 
     console.log('Mouse Click'); 
 
    else 
 
     console.log('Touch'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="element-id">Click here</button>

Umut.

+0

Merhaba Zakaria :) Hızlı cevabınız için teşekkürler. Kodunu denedim. Kimliği bir sınıfa dönüştürdüm ve sınıfı iki girdiye ekledim ve ayrıca tablette neler olduğunu görmek için console.log'un bir uyarıyla değiştirdi. Masaüstünde iyi çalışıyor. Girişe tıkladıktan sonra ekranda "Fare Tıklaması" uyarısı var. Tablette, önce "Dokunma" uyarısı gelir ve kapattıktan sonra ikinci bir uyarı "Fare tıklaması" da ekrana gelir. Dokunma olayından sonra bir tıklama olayı da gönderdiğimi düşünüyorum. "Dokunma" uyarısından sonra bir e.preventDefault denedim. Bu yardımcı olmuyor. Bir fikrin var mı? – MrBuggy

1

@Zakaria Acharki dokunmatik cihazda bu pasajını deneyin

 <script type="text/javascript"> 
     $(document).ready(function(){ 
      $(".cCostumeKeyboard").on("click touchstart",function(e){ 
       if(e.type=="click") { 
        alert("Mouse"); 
        alert(e.type); 
       } 
       else if(e.type=="touchend"){ 
        alert("Touch"); 
        alert(e.type); 
        e.preventDefault(); 
        e.stopPropagation(); 
       } 
      }); 
     }); 
    </script> 

.

  • Uyarısı "Dokunuşlar": "touchEnd"
  • Uyarı: "Fare"
  • Uyarı:
  • "tıklama"

    • Uyarı: Bu bir girdi takip ilk dokunuş sonra gösterir
    +0

    onclick'te "touchstart" yerine "touchend" :) – MrBuggy

    +2

    Bir touch olayı da bir click olayı başlatır. Tıklama etkinliği, dokunma veya tıklama etkinliklerinden sonra gelir. Dolayısıyla, dokunma etkinliğini tespit edin ve ardından tıklama etkinliğinden önce preventDefault() öğesini belirleyin. –

    İlgili konular