String#escapeHTML doesn't do anything with embedded newlines; it
"Converts HTML special characters to their entity equivalents."
Newlines aren't special HTML characters, they're just whitespace.

You can easily do what you want with a String#replace[1]:

    after = before.replace(/\n/g, "<br/>");

Be sure you do the replace *after* you escape the HTML, otherwise
you'll end up with the <br/> displayed literally.  So:

    after = before.escapeHTML().replace(/\n/g, "<br/>");

I don't think browsers ever put a \r before the \n in textareas, but I
couldn't swear to it, so if it were me I'd probably hedge my bets and
optionally include it:

    after = before.escapeHTML().replace(/\r?\n/g, "<br/>");


T.J. Crowder
tj / crowder software / com
Independent Software Engineer, consulting services available

On Jun 12, 8:36 pm, Kash <kaushikagra...@gmail.com> wrote:
> Hey Guys,
> I am using the escapeHTML() string function in the following manner.
> $('divElement').update( stringInput.escapeHTML() );
> Now my stringInput is something like "This is a test\nThis should be a
> new line!!!"
> The \n does not show up as a new line on my HTML page. Was hoping
> someone could guide me what a work around could be so that a new line
> shows up on my HTML page. I did try putting &lt;br&#47;&gt; instead of
> \n. But it just shows up as something weird on the HTML page. Please
> help.
> P.s: I would still like to keep using escapeHTML, so a solution which
> doesn't involve removing escapeHTML from the code would help...
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
For more options, visit this group at 

Reply via email to