【问题标题】:Wrap only selected text with a html tag using javascript使用 javascript 仅用 html 标记包裹选定的文本
【发布时间】:2015-09-06 01:40:51
【问题描述】:

我正在尝试使用 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

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    使用这个条件: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));
        }
    }
    

    【讨论】:

    • @MSZ。当您选择某个范围时,您的按钮将起作用
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多