Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery文本编辑器_Javascript_Jquery_Text Editor - Fatal编程技术网

Javascript jquery文本编辑器

Javascript jquery文本编辑器,javascript,jquery,text-editor,Javascript,Jquery,Text Editor,我想做一个jquery文本编辑器,我在谷歌上搜索了一下,找到了一些有用的东西。基本功能是,当用户在文本区域突出显示文本时,它会在前面添加[b]和[/b]在文本末尾,但如果用户再次单击同一按钮,则会删除所有输入的数据,并仅将突出显示的文本与[b][/b]一起放置,代码如下: $('#bold').mousedown(function(e) { var txt = ''; if (window.getSelection){ txt = window.getSelect

我想做一个jquery文本编辑器,我在谷歌上搜索了一下,找到了一些有用的东西。基本功能是,当用户在文本区域突出显示文本时,它会在前面添加[b]和[/b]在文本末尾,但如果用户再次单击同一按钮,则会删除所有输入的数据,并仅将突出显示的文本与[b][/b]一起放置,代码如下:

$('#bold').mousedown(function(e) {
    var txt = '';
    if (window.getSelection){
        txt = window.getSelection();
    }
    else if(document.getSelection){
        txt = document.getSelection();
    }
    else if(document.selection){
        txt = document.selection.createRange().text;
    }
    else return;

    txt = "[b]"+txt+"[/b]";

    $('#reply').val(txt); 
});
html


试验

这是因为在第一次单击后,选择被清除。因此,第二个替换项没有要包装的文本,因此只需将
[b][/b]
添加到文本区域

尝试在检查是否选择了某项内容的
if
条件下包装进行替换的行:

if (txt !== undefined && txt.length > 0) {
    txt = "[b]"+txt+"[/b]";
    $('#reply').val(txt);
}
不过,你的逻辑似乎有缺陷。假设文本区域中有以下文本:

Lorem ipsum dolor sit amet

如果我突出显示
ipsum
并单击
#bold
按钮,文本区域将删除所有其他单词,现在只显示:

[b] ipsum[/b]


已经存在大量其他jQuery文本编辑器。如果这是一个生产项目,那么使用其中的一个可以节省很多时间。如果你只是想学习jQuery,那就一定要继续。

为什么要重新创建轮子?我正在做一个项目,出售它时,我不希望第三方的东西包含在ittxt中。length什么也不做,而是说Undefine我在回答中修改了条件检查。
if (txt !== undefined && txt.length > 0) {
    txt = "[b]"+txt+"[/b]";
    $('#reply').val(txt);
}