jQuery экранирование HTML из текстовой области

Я хочу преобразовать теги HTML в имена объектов, взяв текст из textarea и поместив результат во второй textarea, чтобы:

<mytag>

становится

&lt;mytag&gt;

Я использую .html() и .text(), иду туда и обратно, ОК. Моя проблема связана с элементом textarea, который действует немного иначе.

Он отлично работает, если я сначала помещаю текст в div:

var htmlStr = $('#textareaInput').val(); //doesn't like .html() .text() ?
$('#dummy').text(htmlStr); // an object to hold the text that supports .html() 
$('#textareaOutput').val($('#dummy').html());

Но я хочу сделать что-то более простое:

var htmlStr = $('#textareaInput').val(); 
$('#textareaOutput').val($(htmlStr).html());

Я предполагаю, что моя проблема в том, что я не понимаю, как манипулировать объектами jQuery, такими как строки, без манипулирования элементами DOM, потому что сейчас я использую div, потому что у него есть метод .html().

Любая помощь будет фантастической!

Спасибо.


person Wayne    schedule 28.07.2010    source источник


Ответы (1)


пытаться

var htmlStr = $('#textareaInput').val(); 
$('#textareaOutput').val($('<div/>').text(htmlStr).html());
person Reigel    schedule 28.07.2010
comment
+1 Вы были быстрее меня, но я не думаю, что ваше второе решение сработает. Это даст вам только текстовое содержимое. jsfiddle.net/wtXBg/1 - person user113716; 28.07.2010
comment
Ух ты! Спасибо... не могу сказать, что полностью понимаю, как это работает, но это работает! (первый) Спасибо! - person Wayne; 28.07.2010
comment
@patric - могу я спросить вас кое о чем?... моя оценка репутации в последнее время немного неуклюжая... иногда она не добавляет голосов?... есть ли здесь ошибка в SO? - person Reigel; 28.07.2010
comment
@Reigel - Если вы получили максимальное ежедневное количество баллов за голосование (200), то вы не получите баллы, пока не достигнете 24-часового периода, когда вы находитесь ниже максимума. Тем не менее, вы все равно будете получать баллы за принятые ответы. Для получения дополнительной информации посетите meta.stackoverflow.com :o) - person user113716; 28.07.2010
comment
Рейгель, я не знаю ни о каких проблемах; проверьте свой аудит репутации; в самом низу (общее количество повторений) показано, сколько повторений у вас будет после пересчета, то есть сколько повторений у вас на самом деле должно быть. Если вы хотите пересчета, просто попросите его (используя кнопку флага для модератора). См. meta.stackexchange.com/questions /43004/ для получения дополнительной информации об аудите торговых представителей. - person balpha; 28.07.2010
comment
@balpla, как вы можете видеть на этом изображении, img820.imageshack.us/img820/1948 /stackoverflow.jpg (репутация за эту неделю) моя репутация не рассчитана должным образом... пока это не так много... Но я просто боюсь, что так будет продолжаться... - person Reigel; 28.07.2010
comment
@Reigel Я пересчитал твоего представителя. Вы не будете этому рады. Я знаю, что не был, когда пересчитывал свою репутацию. Теперь ваша репутация должна рассчитываться правильно. Если это не так, то ни одна репутация не является правильной, и поэтому это не имеет значения (точность против точности; если точность неверна для одного, она неверна для всех, но поскольку репутация рассчитывается одинаково для всех, числа равны) точный). - person ; 28.07.2010
comment
@balpla, и теперь, после аудита репутации, моя репутация с 7 129 снизилась до 6 924... лол - person Reigel; 28.07.2010
comment
@Уилл, да... не беспокойся... :D - person Reigel; 28.07.2010
comment
То, что вы видите на изображении, которое вы разместили, является результатом ежедневного ограничения репутации — вы можете получать только 200 очков в день за счет голосов. - person balpha; 28.07.2010
comment
@balpla, @balpla, спасибо за объяснение... :) - person Reigel; 29.07.2010