Markierten Text in ContentEditable DIV abrufen?

9

Ich habe also ein contenteditable div in meiner Rails-App und muss in der Lage sein, ein kleines Popup über dem Text anzuzeigen, wenn es hervorgehoben ist. Derzeit habe ich Code, der funktioniert, und es zeigt den markierten Text in einer Warnung an. Die Funktion wird jedoch bei mouseup ausgeführt. Wenn Sie also in das div klicken, um mit der Eingabe oder Hervorhebung zu beginnen, wird eine leere Warnung ausgelöst.

Hier ist mein Code:

%Vor%

Wie verhindere ich, dass jQuery die Funktion ausführt, wenn der Benutzer in den contentEditable div klickt? Ich möchte nur, dass es ausgeführt wird, wenn der aktuelle Text markiert ist.

    
Tom Maxwell 26.08.2013, 00:31
quelle

4 Antworten

2

Sie können window.getSelection().anchorOffset und window.getSelection().extentOffset vergleichen, um zu sehen, ob sie gleich sind. Wenn sie es sind, dann war es nur ein normaler Klick.

    
Tarun Dugar 06.08.2016 13:10
quelle
1

Der folgende Befehl gibt "true" zurück, wenn nichts ausgewählt ist.

Inspiriert von @Tarun Dugar. Aber hat nicht in allen Browsern funktioniert. Das Folgende hat funktioniert.

%Vor%     
user2792959 02.06.2017 12:32
quelle
0

Es gibt das Ereignis "selectstart", das ausgelöst wird, wenn der Benutzer die Auswahl startet. Es gibt kein Auswahl-Ende-Ereignis, aber Sie können nach dem Ereignis "selectstart" nach mouseup-Ereignissen suchen, um sicherzustellen, dass die Auswahl stattgefunden hat.

Bearbeiten:

Check - HTML-Inhalt Editierbares div: Text-Ereignis auswählen

    
DexTer 12.06.2014 05:45
quelle
-2

Überprüfen Sie, ob die Auswahl leer ist: if ($.trim( text) != '') ...

    
hammett 26.08.2013 04:55
quelle