在contenteditable div中,我输入一些像@ab这样的单词,并获得一个用户弹出窗口,然后如果我通过鼠标在弹出窗口中选择用户'abc',用户可以将@abc插入div但光标将丢失。如果我通过keycoard选择用户,那没关系。
IE: // currentRange包含@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;
}
答案 0 :(得分: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);