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

标签 javascript jquery html

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

我已经成功地使用文本区域来获取当前插入符位置、插入位置等信息。

我现在遇到的问题是当用户单击另一个元素(即粗体工具)时,不会丢失文本区域中突出显示的文本

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

最佳答案

当文本区域失去焦点时,默认情况下它将丢失任何先前的选择,因此在 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;
       }
    }

关于javascript - 防止单击其他元素时丢失突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197487/

相关文章:

javascript - 移动到另一个 anchor 时更改样式

javascript - qooxdoo桌面(浏览器环境)加载模块

javascript - 如果满足条件,使用 ng-if 显示某些内容

javascript - Highcharts 未与刻度线对齐

javascript - $(document).ready(function (){} 以及它如何转换为 HTML

javascript - CSS tr hover 不包括具有特定类的 tr

javascript - 我如何将数据(如用户 ID)传递给网络 worker 以从服务器获取额外的推送通知数据?

javascript - 使用 JavaScript 进行机场模拟,有固定数量的飞机等待起飞和降落

javascript - 加密和 Node 10 中的未知消息摘要

javascript - 如何在 Bootstrap 中更改面板的折叠方向