2012-04-03 97 views
0

我發現使用jquery從html標籤中的textarea中包裝選定的文本的各種示例,但我想稍微調整此選項以在選擇多行文本時創建列表。從Textarea中選定的文本創建列表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" /> 

回答

0

分割你的文字是這樣的:

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>"); 
    }); 
}); 
相關問題