Хотя новые строки (возврат каретки и перевод строки) технически разрешены в скрытом состоянии ‹input›, их следует экранировать для совместимости со старыми браузерами. Вы можете сделать это, заменив все символы возврата каретки (\u000D
или \r
) и все переводы строки (\u000A
или \n
) собственными строками, которые ваше приложение распознает как возврат каретки или новую строку (а также экранированные, если они присутствуют в исходном коде). нить).
Простые символьные сущности здесь не работают из-за того, что несоответствующие браузеры, возможно, знают, что
и
являются новыми строками, и удаляют их из значения.
Пример
Например, в PHP, если бы вы echo
передали переданное значение текстовой области, вы бы включили символы новой строки (и неэкранированную строку).
‹textarea›Некоторый текст с \included
и новая строка с \r\n в качестве отправленного значения‹/textarea›
Однако в PHP, если бы вы echo
присвоили значение атрибуту value тега ‹input›, вы бы экранировали новые строки с помощью собственных строк (например, \r
и \n
) и экранировали любые экземпляры ваших проприетарных строк в представленном значении.
‹тип ввода=скрытое значение=Некоторый текст с включенным \\\r\nи новой строкой\\r\\n в качестве отправленного значения›
Затем, прежде чем использовать значение в другом месте (вставка в базу данных, отправка по электронной почте и т. д.), при необходимости не забудьте отменить экранирование отправленного значения.
Уверенность
В качестве дополнительной уверенности я спросил WHATWG, и Ян Хиксон, в настоящее время редактор спецификации HTML, ответил:
bfrohs Вопрос о ‹input type=hidden› — разрешены ли в значении символы перевода строки и возврата каретки? Они специально запрещены в состоянии «Текст» и «Поиск», но не упоминаются в состоянии «Скрытый». И, если нет, существует ли приемлемое HTML-решение для хранения данных формы из текстовой области?
Хикси да, они разрешены // iirc // по устаревшим причинам, вы можете избежать их, хотя некоторые браузеры нормализуют их // я забыл, исправили мы это или нет // в спецификации
Источник
person
0b10011
schedule
17.11.2011