2010-12-06 24 views
10

kullanıcı bir metin seçtiğinde (textarea ve input) jquery hangi div metninin seçildiğini bildirmek için geri aramamı arayabilir ve select odağı kaybolduğunda da geri aramamı arayabilirsiniz. ?jquery: metin olayını seç

Teşekkürler.

+0

ikisi metni seçerseniz ne olacağını ya da daha fazla eleman ? – jAndy

+0

Umurumda değil, kullanıcım bunu yapmayacak, eğer yaparlarsa geri dönebileceğim şeyleri iade ediyorum. –

+2

Üzgünüm, cevabımı sildim, jquery select olayı sadece textarea ve input alanlarında çalışıyor. – joni

cevap

9

Şaşırtıcı bir şekilde, bunu yapmanın kolay bir yolu yoktur. IE, tüm öğeler üzerinde uygulanan bir select olayına sahiptir, ancak diğer tarayıcılar bunu hiçbir zaman girişlerin ötesinde genişletmemiştir. Tüm belgede keyup ve mouseup olaylarını ele almanız gerekecek ve hatta seçim gerçekten değişmediğinde geri aranabilir.


GÜNCELLEME 13 Ekim 2013

WebKit tarayıcılar birkaç yıl için Document düğümlerde selectionchange olayı destekledi. IE ayrıca bu olayı tekrar 5.5 sürümüne de taşıyor. Örnek: Aşağıda

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

basit örnek:

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

kullanabileceğiniz this

kullanım <ELEMENT ondrag = "handler(event);" >

object.addEventListener("drag", handler, bCapture); 
İlgili konular