2016-05-09 25 views
5

हम एक वेब-ऐप विकसित कर रहे हैं, जो डेस्कटॉप और टैबलेट (आईपैड, एंड्रॉइड या सतह) पर लॉन्च होता है। अब हम संख्या इनपुट के लिए अपना खुद का कीबोर्ड बना रहे हैं। जब आप एक मूसक्लिक के साथ इनपुट फ़ील्ड पर फोकस सेट करते हैं, तो कॉस्टम कीबोर्ड सही खुलता है। लेकिन जब आप एक स्पर्श किए गए क्लिक (टैबलेट) के साथ इनपुट पर फ़ोकस सेट करते हैं, तो डिफ़ॉल्ट कीबोर्ड भी खुलता है। हमारा विचार है, पता लगाने के लिए, यदि माउस-क्लिक या छुआ क्लिक था। यदि यह एक छुआ क्लिक नहीं है, हम केवल पढ़ने के लिए = "true" इनपुट करने के लिए संपत्ति सेट कर सकते हैं, तो एक रखा पर डिफ़ॉल्ट कुंजीपटल में स्लाइड नहीं होगा।पता लगाएं कि इनपुट स्पर्श किया गया था (टैबलेट) या क्लिक किया गया (माउस)

वहाँ का पता लगाने या जो "प्रकार की जांच के लिए एक रास्ता है "क्लिक करें यह था (छुआ या माउस)।

उत्तर

3

आप दोनों कार्यों touchend के लिए किसी घटना को परिभाषित कर सकते हैं और click तो पता लगा जो एक घटना के प्रकार का उपयोग शुरू हो रहा है:

$('#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>

आशा इस मदद करता है।

+0

हाय ज़कारिया :) आपके तेज़ उत्तर के लिए पहले धन्यवाद। मैंने आपके कोड की कोशिश की। मैंने आईडी को एक कक्षा में बदल दिया और कक्षा को दो इनपुट में जोड़ा और टैबलेट पर क्या हुआ यह देखने के लिए console.log प्रिंट को अलर्ट में बदल दिया। डेस्कटॉप पर यह ठीक काम करता है। इनपुट में क्लिक करने के बाद, स्क्रीन पर चेतावनी "माउस क्लिक" है। टैबलेट पर, पहले अलर्ट "टच" आता है और इसे बंद करने के बाद, दूसरी चेतावनी "माउस क्लिक" भी स्क्रीन पर आती है। मुझे लगता है कि टच इवेंट के बाद यह एक क्लिक इवेंट भी भेजता है। मैंने अलर्ट "टच" के बाद e.preventDefault की कोशिश की। यह मदद नहीं करता है। क्या आपको कोई विचार है? – MrBuggy

1

@Zakaria Acharki

 <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> 

एक स्पर्श डिवाइस पर इस स्निपेट का प्रयास करें।

  • चेतावनी "छूता": "touchend"
  • चेतावनी: "माउस"
  • चेतावनी: "क्लिक"
    • चेतावनी: यह एक इनपुट पालन पर पहला स्पर्श के बाद पता चलता है
    +0

    ऑनक्लिक में "टचस्टार्ट" के बजाय "टचस्टैंड" :) – MrBuggy

    +2

    एक स्पर्श ईवेंट भी एक क्लिक ईवेंट को सक्रिय करता है। क्लिक ईवेंट टचस्टार्ट या टचचेंड घटनाओं के बाद आता है। इसलिए क्लिक ईवेंट से पहले टचेंंड का पता लगाएं और फिर रोकें Default() को रोकें। –

    संबंधित मुद्दे

     संबंधित मुद्दे