我需要通过隐藏字段发布多行数据。数据将在发布后在文本区域中查看。如何以html格式发布换行符/回车符?
我试过\ r \ n但是只发布了实际的“\ r \ n”数据
<input type="hidden" name="multiline_data" value="line one\r\nline two" />
有办法做到这一点吗?
答案 0 :(得分:11)
而不是使用
<input type="hidden">
尝试使用
<textarea style="visibility:hidden;position:absolute;">
答案 1 :(得分:9)
虽然技术上允许在&lt; input&gt;的隐藏状态下使用新行(回车和换行符),但应该对它们进行转义以与旧版浏览器兼容。您可以使用应用程序识别的专有字符串替换所有回车符(\u000D
或\r
)和所有换行符(\u000A
或\n
)来执行此操作回车符或换行符(如果原始字符串中存在,也会进行转义)。
由于不符合标准的浏览器可能知道
和
是新行并从值中删除它们,因此简单的字符实体在此处不起作用。
例如,在PHP中,如果您将echo
传递给textarea的值,则应包含换行符(以及未转义的字符串)。
&lt; textarea&gt;带有\包含的一些文字 和\ r \ n作为提交值&lt; / textarea&gt;
的新行
但是,在PHP中,如果您要echo
&lt; input&gt;的值属性的值\r
标记,您将使用您的专有字符串(例如\n
和{{1}})转义新行,并在提交的值中转义您的专有字符串的任何实例。
&lt; input type =“hidden”value =“某些包含\\的文字\ r \ n和新行\\ r \\ n作为提交值”&gt;
然后,在其他地方使用该值(插入数据库,发送电子邮件等)之前,请务必在必要时取消提交的值。
作为进一步的保证,我问WHATWG,目前HTML规范的编辑Ian Hickson回答说:
bfrohs 有关&lt; input type = hidden&gt;的问题 - 值中是否允许换行和回车?它们在Text状态和Search状态中被明确禁止,但没有提到隐藏状态。如果没有,是否有可接受的HTML解决方案用于存储来自textarea的表单数据?
Hixie 是的,他们被允许// iirc //由于遗产原因你可能希望逃避它们,因为有些浏览器将它们标准化//我忘了如果我们修复了这个//规范
答案 2 :(得分:5)
真的取决于字符集,但&amp;#10;应该换行和&#13;应该回车。您应该能够在value属性中使用它们。
答案 3 :(得分:2)
你没有说明这是什么或者你正在使用什么技术,但是你需要意识到你不能相信隐藏的领域保持价值=“第一行 第二行“,因为恶意用户可以在POST发回之前篡改它。由于你以后将值放在&lt; textarea&gt;中,你肯定会受到跨站点脚本攻击的影响除非您在回写之前验证和/或清理“multiline_data”字段内容。
将值写入隐藏字段并将其读回时,通常最好将其保留在服务器上,作为会话或页面流的属性,或者您的环境为此类事件提供的任何内容。< / p>