Mithun Sreedharan
Mithun Sreedharan

Reputation: 51292

Javascript replacing HTML char code with actual character

I have a HTML input text, and its values are populated from a related div. My problem is that the div contains characters like & which will display correcly as '&' sign in div but when copied to text box the text '&' will be dispalyed

How can i convert &amp; to & and '&lt;' to '<', '&nbsp;' to ' ' ???

Upvotes: 3

Views: 2827

Answers (2)

BalusC
BalusC

Reputation: 1109272

You thus want to unescape HTML entities. With plain JS you can use this snippet:

function unescapeHTML(html) {
    var div = document.createElement("DIV");
    div.innerHTML = html;
    return ("innerText" in div) ? div.innerText : div.textContent; // IE | FF
}

And with jQuery the following one:

function unescapeHTML(html) {
    return $("<div />").html(html).text();
}

But you can also just fix this problem during the step that you "copy" the div's content into the input element's value. Instead of grabbing HTML, just grab text. Instead of element.innerHTML, that'll be element.innerText for IE or element.textContent for real browsers.

No, you can't and shouldn't do this (reliably) with regex.

Upvotes: 5

Ramesh Soni
Ramesh Soni

Reputation: 16077

I am not sure how you are accessing data but a possible solution could be use of innerText property instead on innerHtml

Upvotes: 1

Related Questions