2010-07-28 18 views
7

ich HTML-Tags zu Entitätsnamen entfliehen wollen, Text aus einem textarea nehmen und setzen das Ergebnis in einem zweiten textarea, so dass:jQuery Escaping HTML aus einer Textarea

<mytag> 

wird

&lt;mytag&gt; 

Ich benutze .html() und .text() gehen hin und her OK. Mein Problem ist das textarea Element, das ein wenig anders wirkt.

Es funktioniert gut, wenn ich zum ersten Mal den Text in ein div legen:

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()); 

Aber ich will etwas einfacher wie dies tun:

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

ich mein Problem denke, dass ich don verstehe nicht, wie man jQuery-Objekte wie Strings manipuliert, ohne DOM-Elemente zu manipulieren - weil ich gerade ein div verwende, weil es die .html()-Methode hat.

Jede Hilfe wäre fantastisch!

Danke.

Antwort

5

versuchen

var htmlStr = $('#textareaInput').val(); 
$('#textareaOutput').val($('<div/>').text(htmlStr).html()); 
+0

+1 Sie schneller waren als ich, aber ich glaube nicht, Ihre zweite Lösung funktionieren würde. Es würde Ihnen nur den Textinhalt geben. http://jsfiddle.net/wtXBg/1/ – user113716

+0

Wow! Danke ... kann nicht sagen, ich verstehe total, wie es noch funktioniert, aber es funktioniert! (die erste) Danke! – Wayne

+0

@patric - kann ich dich etwas fragen? ... mein Reputationswert ist in letzter Zeit etwas peinlich ... manchmal wird es nicht die Up-Stimmen addieren? ... gibt es einen Fehler hier bei SO? – Reigel