我知道这个问题已经asked,但我的情况有点不同。
我有一个textarea,其值如此设置:
<textarea><span>all this inside textarea</span></textarea>
现在我正在使用jQuery做一些ajax,并希望通过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>
答案 0 :(得分:3)
您应该使用val函数设置textarea内容:
变化:
jQuery('#content').attr(j[i].content);
要:
jQuery('#content').val(j[i].content);
编辑:为了回应您的评论,您应该检查从您的请求返回的JSON对象我强烈建议您使用Firebug来调试您的回调
textarea尚未清除,因为我非常确定j[i].content
是undefined
,如果你想在这种情况下清除它的价值,你可以:
jQuery('#content').val(j[i].content || '');
因此,如果j[i].content
为undefined
,null
,0
或false
,则会删除textarea。
答案 1 :(得分:1)
感谢所有有识之士。但我刚刚发现了我的问题。我的文本区域的id属性是'content'...这是我在json对象中的键的名称。显然javascript不喜欢这样,并且没有像我们谈论的那样表现。
因此,如果有人遇到同样的问题,请确保您的id属性名称与json对象中的键不相同
答案 2 :(得分:0)
<textarea><span>all this inside textarea</span></textarea>
这是无效的。由于没有像tags-inside-a-textarea这样的东西,浏览器会在你之后清理并把它变成你应该写的东西:
<textarea><span>all this inside textarea</span></textarea>
但你不应该依赖它。如果您的文本包含字符串</textarea>
,您将丢失并可能遭受脚本注入漏洞。
另一方面,设置textarea.value
或jQuery $(textarea).val()
应该直接包含<
这样的字符,因为它们只是纯文本,而不是HTML。
现在我在警报框中看不到任何内容
然后CMS是正确的,您的j[i].content
不包含您认为它的HTML内容。