单击其他元素时防止突出显示丢失

时间:2014-06-13 04:01:06

标签: javascript jquery html

我正在博客上工作,我想要一个部分来添加帖子。我想象它与我现在用来撰写这篇文章的StackExchange编辑器非常相似。

我设法与textarea合作,以获得当前插入位置,插入位置等等。

我遇到的问题是当用户点击其他元素时,不会丢失textarea中突出显示的文字,即:粗体工具

默认情况下(至少在Chrome中)当您在文本区域中突出显示文本然后单击页面上的其他位置时,textarea会丢失焦点并突出显示文本。

1 个答案:

答案 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;
       }
    }