Javascript заменяет HTML-код символа реальным символом - PullRequest
3 голосов
/ 07 июня 2010

У меня есть входной текст HTML, и его значения заполняются из соответствующего div.Моя проблема в том, что div содержит символы, такие как &, которые будут отображаться правильно как '&' знак в div, но при копировании в текстовое поле будет отображаться текст '&'

Как я могу преобразовать &amp;до & и '&lt;' до '<', '&nbsp;' до ' ' ???

Ответы [ 2 ]

5 голосов
/ 07 июня 2010

Таким образом, вы хотите unescape HTML сущностей . С простым JS вы можете использовать этот фрагмент:

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

А с jQuery следующее:

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

Но вы также можете просто решить эту проблему во время шага, когда вы «копируете» содержимое div в значение элемента input. Вместо захвата HTML, просто захватите текст . Вместо element.innerHTML это будет element.innerText для IE или element.textContent для реальных браузеров.

Нет, вы не можете и не должны делать это (надежно) с помощью регулярных выражений.

1 голос
/ 07 июня 2010

Я не уверен, как вы обращаетесь к данным, но возможное решение могло бы использовать свойство innerText вместо innerHtml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...