javascript - 在内容可编辑的 DIV 中将 bb 代码包裹在选定的文本周围

标签 javascript jquery html

所以我正在尝试创建一个 RTE 环境。 我有一个内容可编辑的 div,我想让用户选择文本,然后按下一个将 BBCode 环绕在其周围的按钮。

我尝试创建以下函数,但是,所选文本只是被替换了。 它似乎没有在 selectedText 中存储正确的值

function wrap(tag) 
{


    var sel, range;
    if (window.getSelection)
     {
        sel = window.getSelection();
        if (sel.rangeCount)
         {
            range = sel.getRangeAt(0);
            var selectedText = range;
            range.deleteContents();
            range.insertNode(document.createTextNode('['+tag+']'+selectedText+'[/'+tag+']'));
        }
    } 
    else if (document.selection && document.selection.createRange) 
    {
        range = document.selection.createRange();
        selectedText = document.selection.createRange().text;
        console.log(text);
        range.text = '['+tag+']'+text+'[/'+tag+']';
    }
}


</script>

JQuery 是可以接受的,但我更喜欢常规的 Javascript。

最佳答案

selectedText = range; 更改为 selectedText = range.toString();。范围是一个对象,当您执行 deleteContents 时,它会清除数据,因此不会换行。

DEMO

JS:

function wrap(tag) {
    var sel, range;
    var selectedText;
    if (window.getSelection) {
        sel = window.getSelection();

        if (sel.rangeCount) {
            range = sel.getRangeAt(0);
            selectedText = range.toString();
            range.deleteContents();
            range.insertNode(document.createTextNode('[' + tag + ']' + selectedText + '[/' + tag + ']'));
        }
    }
    else if (document.selection && document.selection.createRange) {
        range = document.selection.createRange();
        selectedText = document.selection.createRange().text + "";
        range.text = '[' + tag + ']' + selectedText + '[/' + tag + ']';
    }

}

关于javascript - 在内容可编辑的 DIV 中将 bb 代码包裹在选定的文本周围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398574/

相关文章:

javascript - 全局变量 Chrome 扩展内容脚本

javascript - SignalR Asp.NET MVC5 用户信息

html - 如何在 HTML 中插入图像,使其充满整个屏幕,而不管屏幕大小?

javascript - 如何将表单值设置为输入名称但发送 ID?

javascript - 如何使 '.box' 响应以及其中的元素,如下拉按钮、文本等?

javascript - 获取具有相同数据属性的最后一个 div

html - 防止 div 在 Bootstrap 中环绕

javascript - 不明白为什么我无法通过 WordPress 连接我的 AJAX 处理程序

javascript - 无法使用 node.js 在 quickblox 上上传内​​容

jquery - 使用 jquery 访问带有 Class 的 div