技术问询:如何在textarea中动态添加并正确显示原始HTML标签文本?
解决textarea显示转义HTML标签的问题
嗨,这问题我遇过好几次啦,核心原因是你的模板引擎(看起来是Laravel的Blade)自动转义了HTML特殊字符,导致数据库里的<b>被转成了<b>,所以才会显示成转义后的字符串。下面一步步给你解决:
1. 先解决从数据库读取的显示问题
你现在用的{{$string_from_db}}是Blade的自动转义语法,它会把<、>这些HTML特殊字符转换成实体字符,防止XSS攻击,但刚好和你的需求冲突了。
把模板里的代码改成{!! $string_from_db !!}就行,这个语法不会转义HTML,能直接输出原始的字符串:
var my_string="{!! $string_from_db !!}"; $('#my_textarea').val(my_string);
这样textarea里就能准确显示<b>this is a bold text</b>啦。
2. 实现动态添加HTML标签到textarea的需求
因为textarea是纯文本输入控件,只要你往它的val()里传入原始的HTML标签字符串,就能直接显示标签本身,不需要额外处理。比如你可以加个按钮,点击时插入指定的HTML标签:
// 假设你有个id为add_bold_tag的按钮 $('#add_bold_tag').click(function() { // 获取textarea当前的内容 var currentContent = $('#my_textarea').val(); // 在末尾添加<b>标签示例 $('#my_textarea').val(currentContent + '<b>新的加粗标签内容</b>'); });
点击按钮后,textarea里就会新增<b>新的加粗标签内容</b>这段文本,完全符合你的需求。
小提醒:如果之后需要把textarea里的内容存回数据库,记得做好XSS防护(比如后端验证过滤),避免恶意代码注入哦~
内容的提问来源于stack exchange,提问作者beginner
相关产品推荐
相关产品推荐

