我想创建一个jquery文本编辑器,我做了一些谷歌搜索,并得到一些工作的基本功能是当用户突出显示textarea中的文本时,它将在前面添加[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
<input type="button" value="Bold" id="bold" />
<form action="" method="get">
<textarea name="reply" id="reply" cols="100" rows="30">Test</textarea>
</form>
答案 0 :(得分:0)
这是因为首次点击后正在清除选择。因此,第二个替换没有要包装的文本,因此只需将[b][/b]
添加到textarea。
尝试在if
条件下包装进行替换的行,以检查是否选择了某些内容:
if (txt !== undefined && txt.length > 0) {
txt = "[b]"+txt+"[/b]";
$('#reply').val(txt);
}
但你的逻辑似乎有缺陷。想象一下textarea中有以下文字:
Lorem ipsum dolor坐好。
如果我突出显示ipsum
并点击#bold
按钮,则textarea会删除所有其他字词,现在只会说:
并[b] ipsum的[/ B]
现在还有很多其他jQuery文本编辑器。如果它是一个生产项目,它将为您节省大量时间来使用其中一个。如果你只是想学习jQuery,那么一定要继续。