user961627
user961627

Reputation: 12747

turn <br> into line breaks using javascript (not php)

I need to extract the text from a div with paragraphs and spans and other things and put it into a textarea. I need to load just the text, not the HTML.

For that, I can use:

loadtext = $('#mydiv').text();

However, I DO need to retain the line breaks.

For that, I'm doing:

loadtext = $('#mydiv').text().replace(/<br>/gm, '\r\n');

But it doesn't seem to be working, because when I load that text into a textarea, it's all flat with no line breaks. Am I doing something wrong?

Upvotes: 2

Views: 325

Answers (2)

Brigand
Brigand

Reputation: 86220

An alternate solution is to use an intermediate element that's never added to the document.

var html = $('#mydiv').html(); // e.g. '<p>line 1</p><br><br><p>line 2</p>'
var text = $('<div>').html(html.replace(/<br\/?>/g, '\n')).text();
/* text =
"line 1

line 2" 
*/
$('#mytextarea').text(text);

This supports <br> (HTML) and <br/>(XHTML).

Upvotes: 1

Asad Saeeduddin
Asad Saeeduddin

Reputation: 46628

$('#mydiv').text() has already been stripped of all HTML, including<br> elements, so this will not work. You need to modify the HTML of the #mydiv element and replace all <br/> elements, then retrieve the text.

$('#mydiv').find('br').each(function(){
    $(this).after("\n")
           .remove();
});
var loadtext = $("#mydiv").text();

Upvotes: 5

Related Questions