Es wird wie folgt html:Cursorposition wiederherstellen nach contenteditable Ändern
<div contenteditable="true" class="value research-form thumbnail">
Some text here
</div>
und Inhalt der div markieren sollte dynamicly einige Wörter während Benutzertypen wie machen etwas, zB:
<div contenteditable="true" class="value research-form thumbnail">
Some text here <span style="background-color: yellow">highlight</div> it
</div>
<script>
$(document).ready(function() {
var input = $('#textarea').on('input', function (event) {
var newText = input.text().replace('highlight', '<span style="background-color: yellow">highlight</div>');
input.html($.parseHTML(newText));
});
});
</script>
Aber es ist ein Problem: Wenn ich Text im Div-Cursor aktualisiere, verschiebt sich der Text am Anfang des Textes.
Gibt es Möglichkeiten, die Cursorposition nach der Änderung des contenteditable Wertes wiederherzustellen? Oder gibt es vielleicht einen anderen Weg, den gleichen Effekt zu erzielen?
Versuchen Cursorposition speichern (siehe http://stackoverflow.com/questions/4767848/get-caret-cursor-position-in-contenteditable-area-containing- html-content) und dann zurück setzen (siehe http://stackoverflow.com/questions/1181700/set-cursor-position-on-contenteditable-div) nach input.html (...). Ich denke, Sie haben hier auch ein anderes Problem: In Ihrem Beispiel wird das Wort "Hervorhebung" jedes Mal, wenn Sie den Text bearbeiten, in einen neuen Bereich eingeschlossen. Vermutlich sollten Sie umbrochene Wörter durch Platzhalter ersetzen, bevor Sie neue Spannen hinzufügen und dann Platzhalter ersetzen. – Qwerty
Wenn Sie eine Lösung haben, die Ihren Erwartungen entspricht, sollten Sie sie als Antwort hinzufügen und auswählen. http://StackOverflow.com/Help/self-answer –
@JasonSperske getan – Tdm