jQuery-Ereignis für HTML-Änderung in einem Div-Element?

9

Lange Rede, kurzer Sinn - Ich habe ein editierbares <div> und möchte die Formatierung löschen, wenn jemand etwas einfügt. Da jQuery keine Kontrolle über die Zwischenablage hat und ich nicht in die Cross-Browser-Kompatibilität einsteigen möchte, dachte ich Ich würde auf ein Ereignis warten, das ausgeführt wird, wenn sich der Inhalt ändert.

Ich habe $("#mydiv").change() ausprobiert, aber das funktioniert natürlich nur in Textfeldern und Textfeldern (?), also gibt es eine Möglichkeit, dies zu tun?

Ich würde auch alternative Lösungen akzeptieren, und jede Lösung, die ich verwende, wird als richtige Antwort markiert.

Danke!

    
Hubro 15.09.2010, 23:34
quelle

5 Antworten

4

Sie können .keyup() zum Kopieren und Einfügen verwenden. Der Rechtsklick gefolgt von Einfügen im Kontextmenü scheint keinen Klick aufzunehmen, also .click() funktioniert nicht. Verwenden Sie stattdessen setInterval() , um alle X Sekunden zu überprüfen, um Rechtsklick-Pasten zu erfassen.

Nicht sicher, ob Sie .keyup() an das div binden können (ob das div in allen Browsern fokussierbar ist), aber alle Tastaturen blubbern bis zum Dokument, also funktioniert $(document) immer.

%Vor%

jsFiddle-Beispiel


Dies funktioniert mit Einfügen ... es fängt ctr, shift, etc Schlüssel. (Wenn du es mit w ctr-v ausprobierst und einen Schlüssel nach dem anderen veröffentlichst, dann behalte den Status im Auge, da der Status nur changed nach der Freigabe des ersten Schlüssels und same nach der Freigabe anzeigt von der Sekunde .... wie es sein sollte).

Hinweis: Ich hätte gerne einen .keyup() -Handler und einen setInterval , da dies garantiert, dass die Rückmeldung sofort für Tastenanschläge erfolgt .... obwohl es nach einem Rechtsklick-Einfügen möglicherweise eine Verzögerung gibt.

    
Peter Ajtai 15.09.2010, 23:59
quelle
0

Verwenden Sie stattdessen <textarea>     

Marko 15.09.2010 23:37
quelle
0

Dies könnte eine mögliche Lösung für Sie sein: Ссылка

    
djangofan 15.09.2010 23:44
quelle
0

Sie können ein "keydown" -Ereignis verwenden - es wird Shift-Tasten drücken, so dass es zum Einfügen funktioniert, sowie die Löschtaste.

Wenn Sie feststellen müssen, ob sich der Inhalt geändert hat, speichern Sie den alten Inhalt und vergleichen Sie, wann das Ereignis ausgelöst wird.

Um das Einfügen mit der Maus zu erfassen, müssen Sie den aktuellen Inhalt wahrscheinlich regelmäßig mit einem alten Timer vergleichen. Sie können den Overhead reduzieren, indem Sie den Timer für den Fokus aktivieren und ihn bei Unschärfe stoppen.

    
sje397 15.09.2010 23:42
quelle
0

Ich denke TinyMCE für JQuery kann die Arbeit für Sie erledigen.

    
xar 16.09.2010 01:41
quelle

Tags und Links