zufriedene Änderungsereignisse
Möchte ich eine Funktion auszuführen, wenn ein Benutzer editiert den Inhalt eines div
mit contenteditable
Attribut. Was ist das äquivalent einer onchange
Veranstaltung?
Bin ich mit Hilfe von jQuery, so dass alle Lösungen, die jQuery verwendet, ist bevorzugt. Danke!
InformationsquelleAutor der Frage Jourkey | 2009-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine effizientere Variante, die verwendet
on
für alle contenteditables. Es basiert off der top-Antworten hier.Projekt ist hier: https://github.com/balupton/html5edit
InformationsquelleAutor der Antwort balupton
Erwägen Sie die Verwendung MutationObserver. Diese Beobachter sind entworfen, reagieren auf Veränderungen in den DOM, und als performanter Ersatz für Mutation Events.
Vorteile:
Nachteile:
Erfahren Sie mehr:
InformationsquelleAutor der Antwort jrullmann
nicht jQuery schnell und dirty Antwort:
InformationsquelleAutor der Antwort Developia
Habe ich geändert lawwantsin 's Antwort wie so und das funktioniert für mich. Ich nutze das keyup-Ereignis statt Tastendruck-die funktioniert Super.
InformationsquelleAutor der Antwort Dennkster
Hier ist was für mich gearbeitet:
InformationsquelleAutor der Antwort gregory whiteside
Dieser thread war sehr hilfreich, während ich untersucht wurde das Thema.
Habe ich modifiziert einige der code hier in ein jQuery-plugin, so ist es in eine wiederverwendbare form, die in Erster Linie zur Befriedigung meiner Bedürfnisse, aber andere können zu schätzen wissen, eine einfachere Schnittstelle zu jumpstart mit contenteditable-tags.
https://gist.github.com/3410122
Update:
Aufgrund Ihrer zunehmenden Popularität des plugins angenommen hat Makesites.org
Entwicklung wird auch weiterhin von hier:
https://github.com/makesites/jquery-contenteditable
InformationsquelleAutor der Antwort tracend
Hier ist die Lösung, die ich letztendlich benutzt und funktioniert Fabelhaft. Ich verwende $(this).text() statt, da habe ich nur eine Zeile mit div, ist der Inhalt editierbar. Sie können Sie aber auch verwenden .html() auf diese Weise haben Sie keine sorgen über den Rahmen einer globalen oder nicht-globalen Variablen und die Ehe ist tatsächlich angebracht, um den editor div.
InformationsquelleAutor der Antwort user740433
Das onchange-Ereignis nicht ausgelöst, wenn ein element mit dem contentEditable Attribut geändert wird, eine vorgeschlagene Ansatz könnte sein, fügen Sie eine Schaltfläche, um "speichern" der edition.
Prüfen Sie dieses plugin, das behandelt das Thema so:
InformationsquelleAutor der Antwort CMS
Zu vermeiden, Timer und "save" buttons, Sie können benutzen Sie das blur-Ereignis, welches ausgelöst wird, wenn das element den Fokus verliert. aber um sicher zu sein, dass das element wurde tatsächlich geändert (nicht nur fokussiert und defokussiert), dessen Inhalt verglichen werden soll gegenüber seiner letzten version. oder verwenden keydown-Ereignis, um einige "dirty" - flag auf dieses element.
InformationsquelleAutor der Antwort joox
Mit DOMCharacterDataModified unter MutationEvents führen wird. Die timeout-Einstellung, um zu verhindern senden falsche Werte (z.B. in Chrome hatte ich einige Probleme mit der space-Taste)
JSFIDDLE-Beispiel
InformationsquelleAutor der Antwort janfabian
Baute ich ein jQuery-plugin, um dies zu tun.
Rufen Sie einfach an
$('.wysiwyg').wysiwygEvt();
Können Sie auch entfernen /hinzufügen von events wenn Sie es wünschen
InformationsquelleAutor der Antwort Blowsie
Eine einfache Antwort in JQuery, das ich erstellt habe diesen code, und dachte, es wird hilfreich sein, auch für andere
InformationsquelleAutor der Antwort sarath
Zwei Optionen:
1) Für moderne (evergreen) Browser:
Der "input" - Veranstaltung handeln würde als alternative "change" - Ereignis aus.
https://developer.mozilla.org/en-US/docs/Web/Events/input
oder
oder (mit jQuery)
2) Konto für IE11 und moderne (evergreen) Browser:
Diese Uhren element-Veränderungen und deren Inhalte in den div.
https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
InformationsquelleAutor der Antwort bit-less
Check diese Vorstellung aus.
http://pastie.org/1096892
Ich denke, es ist in der Nähe. HTML 5 muss wirklich hinzufügen, um das change-Ereignis der spec. Das problem ist nur, dass die callback-Funktion wertet if (vor == $(this).html ()), bevor der Inhalt tatsächlich aktualisiert in $(this).html(). setTimeout funktioniert nicht, und es ist traurig. Lassen Sie mich wissen, was Sie denken.
InformationsquelleAutor der Antwort Lawrence Whiteside
Nicht JQuery Antwort...
Verwenden Sie es aufrufen, auf (sagen wir) eine header-element mit id="myHeader"
Diesem element wird jetzt bearbeitet werden, indem dem Benutzer, bis es den Fokus verliert.
InformationsquelleAutor der Antwort DrMcCleod