将换行符/回车符作为隐藏字段值

10 html post newline carriage-return hidden-field

我需要通过隐藏字段发布多行数据.数据将在发布后在文本区域中查看.如何以html格式发布换行/回车?

我试过\ r \n但是只发布实际的"\ r \n"数据

<input type="hidden" name="multiline_data" value="line one\r\nline two" />
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

小智 11

而不是使用

<input type="hidden">

尝试使用

<textarea style="visibility:hidden;position:absolute;">

  • @daiscog 表单元素设置为 `display:none` [并不总是提交](http://stackoverflow.com/a/8318442/526741)。我不确定哪些浏览器会和不会提交 `display:none` 字段,但根据该答案下的评论,IE8 不会*。 (3认同)

0b1*_*011 9

虽然在<input>的隐藏状态下技术上允许使用新行(回车和换行),但应该对它们进行转义以与旧版浏览器兼容.您可以通过将所有回车符(\u000D\r)和所有换行符(\u000A\n)替换为应用程序识别的专有字符串作为回车符或新行(并且如果存在于原始字符串中也进行转义)来执行此操作.

简单的字符实体在这里不起作用,因为不符合标准的浏览器可能知道&#10;并且&#13;是新行并从值中剥离它们.

例如,在PHP中,如果您echo将传递的值传递给textarea,则应包括换行符(和未转义的字符串).

<textarea>带有\ included的一些文本
和带有\ r \n作为提交值的新行</ textarea>

但是,在PHP中,如果您使用<input>标记echovalue属性的,则可以使用专有字符串(例如\r\n)转义新行,并在提交的值中转义专有字符串的任何实例.

<input type ="hidden"value ="包含\\包含\ r \n的一些文本以及作为提交值的新行\\ r \\n">

然后,在其他地方使用该值(插入数据库,发送电子邮件等)之前,请务必在必要时取消提交的值.

放心

作为进一步的保证,我问WHATWG,目前HTML规范的编辑Ian Hickson回答说:

bfrohs关于<input type = hidden>的问题 - 值中是否允许行和回车?它们在Text状态和Search状态中被明确禁止,但没有提到隐藏状态.如果没有,是否有可接受的HTML解决方案来存储来自textarea的表单数据?

Hixie是的,他们被允许// iirc //由于遗留原因你可能希望逃避它们虽然有些浏览器将它们标准化//我忘了如果我们在规范中修复了//

资源


Arn*_*hea 5

真的取决于字符集,但 应该换行和 应该回车.您应该能够在value属性中使用它们.