我正在處理「添加評論框」,其中包含一些功能,如將[b]text[/b]
更改爲帶粗體樣式的文本等。問題是當javascript中的str.replace操作完成了寫入區域中的光標回到開始位置時。如何在更新輸入值時保持光標位置
$('#comment').keyup(function() {
var str = document.getElementById("comment").innerHTML;
if (str.indexOf('[b]') >= 0 && str.indexOf('[/b]') >= 0) {
var start_pos = str.indexOf('[b]') + 3;
var end_pos = str.indexOf('[/b]', start_pos);
var text_to_get = str.substring(start_pos, end_pos)
res = str.replace("[b]" + text_to_get + "[/b]", "<b>" + text_to_get + "</b>");
document.getElementById("comment").innerHTML = res;
}
});
這不是關於'str.replace'的問題,而是'innerHTML'的行爲。 – isherwood
[這個問題和答案](http://stackoverflow.com/questions/7745867/how-do-you-get-the-cursor-position-in-a-textarea)有幫助嗎? – Blazemonger
[在contenteditable div中保持遊標位置]的可能重複(http://stackoverflow.com/questions/16194364/maintain-cursor-position-in-contenteditable-div) – isherwood