我需要通过隐藏域来发布多行数据。发布后,这些数据将在文本区域中查看。如何在HTML表单中发布新的一行或回车符?
我尝试过使用 \r\n,但只会将实际的 "\r\n" 数据发布出去。
<input type="hidden" name="multiline_data" value="line one\r\nline two" />
有没有一种方法可以做到这一点?
我需要通过隐藏域来发布多行数据。发布后,这些数据将在文本区域中查看。如何在HTML表单中发布新的一行或回车符?
我尝试过使用 \r\n,但只会将实际的 "\r\n" 数据发布出去。
<input type="hidden" name="multiline_data" value="line one\r\nline two" />
有没有一种方法可以做到这一点?
不要使用
<input type="hidden">
尝试使用
<textarea style="visibility:hidden;position:absolute;">
\u000D
或\r
)和所有换行符(\u000A
或\n
)替换为专有字符串来实现此目的,在原始字符串中也要进行转义以识别为回车符或换行符。
仅使用字符实体在这里无效,因为不符合规范的浏览器可能知道
和
是换行符,并从值中剥离它们。
例如,在PHP中,如果要将传递的值echo到文本区域中,则应包含换行符(和未转义的字符串)。
然而,在PHP中,如果您要将值输出到标签的value属性中,您需要使用专有的字符串(例如<textarea>Some text with a \ included
and a new line with \r\n as submitted value</textarea>
\r
和\n
)对新行进行转义,并转义提交的值 中任何实例的专有字符串。
<input type="hidden" value="Some text with a \\ included\r\nand a new line\\r\\n as submitted value">
然后,在将该值用于其他地方之前(插入到数据库、发送电子邮件等),请务必解除提交的值的转义,如有必要。
为了进一步保证,我向WHATWG提出了问题,HTML规范的编辑Ian Hickson回复:
bfrohs 关于 <input type=hidden> 的问题--在 value 中是否允许换行和回车?在 Text 状态和 Search 状态中明确禁止使用它们,但是在 Hidden 状态中没有提到。如果不允许,有没有可接受的 HTML 解决方案来存储来自文本区域的表单数据? Hixie 是的,它们是允许的 // 如我所记 // 由于一些浏览器会将其标准化,基于向后兼容的原因,您可能希望对它们进行转义 // 我忘记我们是否修复了这个问题 // 在规范中 来源实际上取决于字符集,但是 应该表示换行,而 应该表示回车符。您应该能够在value属性中使用这些。
和
是换行符,如果它错误地删除了换行符,那么它也会删除所有出现的
和
。 - 0b10011当向隐藏字段写入值并读取它时,通常最好将它保留在服务器上,作为会话、页面流或其他环境提供的属性来执行此类操作。
style="display:none;"
可能更加简洁。 - daiscogdisplay:none
的话,不一定会被提交。我不确定哪些浏览器会或不会提交display:none
字段,但根据该回答下面的评论,IE8 不会提交。 - 0b10011