2009-09-08 224 views
1

我知道這個問題已經被asked但我的是有點不同。當它包含html標籤時在文本區域設置文本

我有一個文本,其值我已設置像這樣:

<textarea><span>all this inside textarea</span></textarea> 

我現在做一些Ajax與jQuery,並要設置通過jQuery textarea的價值。

以下是我的jQuery代碼。

jQuery(function(){ 
    jQuery("select#rooms").change(function(){ 
    var options = ''; 
    jQuery.getJSON("/admin/selection.php",{id: jQuery(this).val(), ajax: 'true'}, 
    function(j){ 
     for (var i = 0; i < j.length; i++) { 
     options = j[i].topImage; 
jQuery('#toppic').val(options); 
jQuery('#title').val(j[i].title); 
alert(j[i].content); //this is text area content. it has html tags 
jQuery('#content').attr(j[i].content); //text area 
     } 
    }) 
    }) 
}) 

編輯:我的JSON的迴應是:

[ {topImage: 'cfil823', title: 'Dining', content: '<SPAN STYLE= "" >Dining Rooms must be simultaneously inviting enough for a festive Sunday brunch and intimate enough for a 
crown jewel in the room. </SPAN>'}] 

有jQuery的一種方式來逃避html標籤?

而且,最初textarea的設置是這樣的:

<textarea id="content" wrap="hard"><?php echo $comma_separated?></textarea> 

回答

3

應設置textarea的內容與val功能:

變化:

jQuery('#content').attr(j[i].content); 

要:

jQuery('#content').val(j[i].content); 

編輯:在回答您的意見,您應檢查JSON對象從您的請求返回我強烈建議你使用Firebug調試回調

textarea裏沒有被清除,因爲我敢肯定即j[i].contentundefined,如果你想清楚在這種情況下,你可以將其值:

jQuery('#content').val(j[i].content || ''); 

所以,如果j[i].contentundefinednull0false,textarea的將被清除。

+0

嗯那不是任何工作的關鍵。儘管我回來的內容有html,但我仍然應該能夠看到一些東西,當我通過警報打印出來的價值?現在我沒有看到任何警告框中。也許,我沒有從後端得到任何東西..但是,現在的文本框的值應該被清除......這也不會發生。 – josh 2009-09-08 05:34:50

+0

接受了您的建議並調查了json響應。請參閱我的編輯 – josh 2009-09-08 11:50:32

0
<textarea><span>all this inside textarea</span></textarea> 

這是無效的。由於是標籤,裏面-A-的textarea沒有這樣的事情,瀏覽器會在後面進行清理,並把它變成你應該寫什麼:

<textarea>&lt;span>all this inside textarea&lt;/span></textarea> 

,但你不應該依賴它。如果您的文本包含字符串</textarea>,您將會丟失並可能遭受腳本注入漏洞。

另一方面,設置textarea.value或jQuery $(textarea).val()應該直接包含像<這樣的字符,因爲它們只是純文本而不是HTML。

現在我沒有看到任何的警告框

然後CMS是正確的,你的j[i].content不包含你認爲它的HTML內容。

+0

對不起,如果我的問題是誤導,但