使用javascript仅包含带有html标记的选定文本

时间:2015-09-05 15:18:39

标签: javascript html css

我试图使用javascript标签仅包装具有特定标签的选定文本。我找到了一个代码但是当我点击一个按钮然后它会添加一个我不想要的标签,因为我只想在所选元素周围应用标签。

示例JS代码:

function wrapText(elementID, openTag, closeTag) {
    var textArea = $('#' + elementID);
    var len = textArea.val().length;
    var start = textArea[0].selectionStart;
    var end = textArea[0].selectionEnd;
    var selectedText = textArea.val().substring(start, end);
    var replacement = openTag + selectedText + closeTag;
    textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len));
}

$('#bold').click(function() {
    wrapText("myTa", "<strong>", "</strong>");
});
$('#italic').click(function() {
    wrapText("myTa", "<em>", "</em>");
});
$('#underline').click(function() {
    wrapText("myTa", "<u>", "</u>");
});
$('#code').click(function() {
    wrapText("myTa", "<pre><code>", "</code></pre>");
});

这是完整的工作代码Link

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用此条件:if(start != end){ ... }

http://jsfiddle.net/sherali/bd4np/119/

function wrapText(elementID, openTag, closeTag) {
    var textArea = $('#' + elementID);
    var len = textArea.val().length;
    var start = textArea[0].selectionStart;
    var end = textArea[0].selectionEnd;
    if (start != end){
       var selectedText = textArea.val().substring(start, end);
       var replacement = openTag + selectedText + closeTag;
       textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len));
    }
}