1

在 contenteditable div 中,我输入一些诸如 @ab 之类的单词,然后弹出一个用户弹出窗口,然后如果我在弹出窗口中通过鼠标选择用户“abc”,用户可以将 @abc 插入 div 但光标会丢失。如果我通过键盘选择用户,就可以了。

IE: //currentRange include @ab //elem 是 contenteditable div

    elem = $this.get(0);
    elem.focus();

    var inputStr = <a href="userlink">@abc</a>

    currentRange.pasteHTML(inputStr);   

    // set cursor position  
    var r = document.selection.createRange(); 
    if(bookmark) {
        r.moveToBookmark(bookmark);
        r.select();
        bookmark = null;
    }
4

1 回答 1

1

选中后调用pasteHTML()范围,光标会自动移动到粘贴内容后的位置:

elem = $this.get(0);
elem.focus();

var inputStr = '<a href="userlink">@abc</a>';

// set cursor position  
var r = document.selection.createRange(); 
if(bookmark) {
    r.moveToBookmark(bookmark);
    r.select();
    bookmark = null;
}
r.pasteHTML(inputStr);   
于 2012-09-08T09:40:26.787 回答