我正在博客上工作,我想要一个部分来添加帖子。我想象它与我现在用来撰写这篇文章的StackExchange编辑器非常相似。
我设法与textarea合作,以获得当前插入位置,插入位置等等。
我遇到的问题是当用户点击其他元素时,不会丢失textarea中突出显示的文字,即:粗体工具。
默认情况下(至少在Chrome中)当您在文本区域中突出显示文本然后单击页面上的其他位置时,textarea会丢失焦点并突出显示文本。
答案 0 :(得分:1)
当textarea失去焦点时,它将默认丢失任何先前的选择,因此在onblur事件中,您可以使用以下函数保存当前选择:
function getSelectedText() {
var txtarea = document.getElementById(textBoxScript);
var start = txtarea.selectionStart;
var finish = txtarea.selectionEnd;
var sel = txtarea.value.substring(start, finish);
return sel;
}
要将其设置回焦点事件,您可以使用以下功能:
function selectText(startPos, endPos, tarea) {
// Chrome / Firefox
if (typeof (tarea.selectionStart) != "undefined") {
tarea.focus();
tarea.selectionStart = startPos;
tarea.selectionEnd = endPos;
return true;
}
// IE
if (document.selection && document.selection.createRange) {
tarea.focus();
tarea.select();
var range = document.selection.createRange();
range.collapse(true);
range.moveEnd("character", endPos);
range.moveStart("character", startPos);
range.select();
return true;
}
}