Có html như thế này:Khôi phục vị trí con trỏ sau khi thay đổi contenteditable
<div contenteditable="true" class="value research-form thumbnail">
Some text here
</div>
Và nội dung của div nên dynamicly làm nổi bật một số từ trong khi sử dụng các loại ví dụ như làm một cái gì đó như:
<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>
Nhưng có một vấn đề: khi tôi làm mới văn bản trong di chuyển con trỏ div ở đầu văn bản trong đầu vào.
Có cách nào để khôi phục vị trí con trỏ sau khi thay đổi giá trị có thể chỉnh sửa được không? Hoặc có thể có cách khác để có được hiệu ứng tương tự?
Cố gắng tiết kiệm vị trí con trỏ (xem http://stackoverflow.com/questions/4767848/get-caret-cursor-position-in-contenteditable-area-containing- html-content) và sau đó thiết lập lại (xem http://stackoverflow.com/questions/1181700/set-cursor-position-on-contenteditable-div) sau input.html (...). Tôi nghĩ rằng bạn cũng có vấn đề khác ở đây: trong ví dụ của bạn "nổi bật" từ sẽ được gói trong một khoảng mới mỗi khi bạn chỉnh sửa văn bản. Bạn có thể nên thay thế các từ được bao bọc bằng các phần giữ chỗ trước khi thêm các nhịp mới, sau đó thay thế các phần giữ chỗ trở lại. – Qwerty
Nếu bạn có một giải pháp đáp ứng kỳ vọng của bạn, bạn nên thêm nó như là một câu trả lời và chọn nó. http://stackoverflow.com/help/self-answer –
@JasonSperske thực hiện – Tdm