2009-09-08 51 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

对不起,如果我的问题是误导,但