избегать меньше / больше, чем JavaScript - PullRequest
4 голосов
/ 07 марта 2011

У меня проблема с попыткой экранирования некоторого кода ... По сути, я хочу экранировать "<" и ">", но я хочу, чтобы они появлялись в моем #output div как "<" и ">".В настоящее время они отображаются как «<» и «>» на странице.

Это очевидно для того, чтобы никто не мог использовать / вводить скрипты на странице.Это мой код:

var textval = $("#textarea").val();                   //textarea

filtered = textval.replace(/</gi,"&lt;");           //replace "<"

$("#output").html(filtered);                     //insert textarea data into div

Кто-нибудь может заметить, что я делаю неправильно, или есть ли лучшие способы сделать это?

Большое спасибо

РЕДАКТИРОВАТЬ: Яхочу, чтобы некоторые HTML-теги работали (например, , поэтому я не могу использовать $ .text (); к сожалению ..)

Ответы [ 2 ]

5 голосов
/ 07 марта 2011

Попробуйте это:

var textval = $("#textarea").val();
$("#output").text(textval);      

jQuery предлагает два метода - $ .text () и $ .html (), где имена методов говорят сами за себя:)

0 голосов
/ 07 марта 2011

Немного другая замена, но у меня работает (даже с .html()).

Демо

var str = $('#textarea').val();
$('#result').html(str.replace(/<|>/ig,function(m){
    return '&'+(m=='>'?'g':'l')+'t;';
}));

<textarea id="textarea">
    Hello, <b>World</b>!
</textarea>
<div id="result"></div>

(Это просто для проверки того, что это можно сделать, .text() - лучший подход)

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