2010-12-06 24 views
10

का चयन करें क्या यह संभव है कि जब उपयोगकर्ता ने कुछ टेक्स्ट (गैर टेक्स्टरी और न ही इनपुट) चुना, तो jquery मुझे कॉलबैक कॉल कर सकता है ताकि मुझे पता चल सके कि कौन सा div का टेक्स्ट चुना गया है, और यदि चयन फोकस खो गया है तो भी मेरे कॉलबैक को कॉल करें ?jquery: टेक्स्ट इवेंट

धन्यवाद।

+0

अगर आप दो से लेख का चयन क्या होने चाहिए या अधिक तत्व ? – jAndy

+0

मुझे परवाह नहीं है, मेरा उपयोगकर्ता ऐसा नहीं करेगा, अगर वे ऐसा करते हैं तो मैं वापस लौटाता हूं जो मैं वापस कर सकता हूं। –

+2

क्षमा करें, मेरा उत्तर हटा दिया गया है, jquery select event केवल textarea और इनपुट फ़ील्ड में काम करता है। – joni

उत्तर

9

कुछ हद तक आश्चर्यजनक रूप से, ऐसा करने का कोई आसान तरीका नहीं है। आईई में select ईवेंट है जो सभी तत्वों पर लागू किया गया है लेकिन अन्य ब्राउज़रों ने इसे इनपुट से परे कभी नहीं बढ़ाया है। आपको पूरे दस्तावेज़ पर keyup और mouseup ईवेंट को संभालना होगा, और फिर भी, जब चयन वास्तव में नहीं बदला जाता है तो भी आपकी कॉलबैक को कॉल किया जा सकता है।


अपडेट 13 अक्टूबर 2013

वेबकिट ब्राउज़रों कुछ साल के लिए Document नोड्स पर selectionchange घटना का समर्थन किया है। आईई इस घटना को संस्करण 5.5 पर भी समर्थन देता है। उदाहरण:

document.onselectionchange = function() { 
    console.log("Selection changed"); 
}; 

यहाँ एक सरल उदाहरण है:

function selectCallback(selectionParentElement) { 
    console.log("Selecting, parent element is " + selectionParentElement.nodeName); 
} 

var mouseOrKeyUpHandler; 

if (typeof window.getSelection != "undefined") { 
    // Non-IE 
    mouseOrKeyUpHandler = function() { 
     var sel = window.getSelection(); 
     if (sel.rangeCount > 0) { 
      var range = sel.getRangeAt(0); 
      if (range.toString()) { 
       var selParentEl = range.commonAncestorContainer; 
       if (selParentEl.nodeType == 3) { 
        selParentEl = selParentEl.parentNode; 
       } 
       selectCallback(selParentEl); 
      } 
     } 
    }; 
} else if (typeof document.selection != "undefined") { 
    // IE 
    mouseOrKeyUpHandler = function() { 
     var sel = document.selection; 
     if (sel.type == "Text") { 
      var textRange = sel.createRange(); 
      if (textRange.text != "") { 
       selectCallback(textRange.parentElement()); 
      } 
     } 
    }; 
} 

document.onmouseup = mouseOrKeyUpHandler; 
document.onkeyup = mouseOrKeyUpHandler; 
1

आप उपयोग कर सकते this

उपयोग <ELEMENT ondrag = "handler(event);" >

object.addEventListener("drag", handler, bCapture); 
संबंधित मुद्दे