Istnieje html tak:Przywracanie pozycji kursora po zmianie contenteditable
<div contenteditable="true" class="value research-form thumbnail">
Some text here
</div>
i zawartości div powinien dynamicznie wyróżnić kilka słów podczas gdy użytkownik wpisze np zrobić coś takiego:
<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>
Ale jest problem: gdy odświeżam tekst w kursie div porusza się na początku tekstu na wejściu.
Czy są jakieś sposoby na przywrócenie położenia kursora po zmianie zawartości podlegającej wartości? A może jest inny sposób na uzyskanie tego samego efektu?
Spróbuj zapisać pozycję kursora (patrz http://stackoverflow.com/questions/4767848/get-caret-cursor-position-in-contenteditable-area-containing- html-content), a następnie ustawienie go ponownie (zobacz http://stackoverflow.com/questions/1181700/set-cursor-position-on-contenteditable-div) po input.html (...). Myślę, że masz tu również inny problem: w twoim przykładzie "wyróżnij" słowo będzie zawijane w nowy zakres przy każdym edytowaniu tekstu. Prawdopodobnie powinieneś zamienić zawijane słowa na symbole zastępcze przed dodaniem nowych przęseł, a następnie zastąpić znaki zastępcze. – Qwerty
Jeśli masz rozwiązanie spełniające Twoje oczekiwania, powinieneś dodać je jako odpowiedź i wybrać. http://stackoverflow.com/help/self-answer –
@JasonSperske done – Tdm