从文本区域中的选定文本创建列表html

Create list html from selected text in Textarea

本文关键字:文本 创建 列表 html 区域      更新时间:2023-09-26

我发现了使用jquery将文本区域中的选定文本包装在html标记中的各种示例,但我想稍微调整一下,以便在选择多行文本时创建一个列表。

目前,下面的代码将整个选择包装在列表标记中,但我也想将所有回车符替换为列表项的关闭和打开标记,因此文本区域中的每一行都是一个新的列表项。

我认为问题之一可能是.val函数将文本区域读取为单行。

jquery:

function listText(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));
}
$(document).ready(function () {
    $("#BoldIt").click( function() {
        listText("markItUp", "<ul><li>", "</li></ul>");
    });
});

正文:

<textarea id="markItUp" cols="80" rows="20"></textarea>
<br />
<input type="button" value="Bold" id="BoldIt" />

像这样分割文本:

function listText(elementID, openTag, closeTag) {
    var textArea = $('#' + elementID);
    var s = "'n";
    var len = textArea.val().length;
    var start = textArea[0].selectionStart;
    var end = textArea[0].selectionEnd;
    var selectedText = textArea.val().substring(start, end);
    var replacement = "";
    var rows = selectedText.substring(start, end).split(s);
    for(var i = 0; i < rows.length; i++) {
    replacement += openTag + rows[i] + closeTag + s;
    }
    textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len));
}
$(document).ready(function () {
    $("#BoldIt").click( function() {
    listText("markItUp", "<ul><li>", "</li></ul>");
    });
});