Pregunta

Necesito publicar datos de múltiples líneas a través de un campo oculto. Los datos se verán en un TextARea después de la publicación. ¿Cómo puedo publicar un retorno de nueva línea/carro en el formulario HTML?

He probado r n pero eso solo publica los datos reales " r n"

<input type="hidden" name="multiline_data" value="line one\r\nline two" />

¿Hay alguna forma de hacer esto?

¿Fue útil?

Solución

Depende realmente del conjunto de caracteres, pero debería ser la alimentación de línea y debería ser el retorno del carro. Debería poder usarlos en el atributo de valor.

Otros consejos

En lugar de usar

<input type="hidden">

Intenta usar

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

Mientras que las nuevas líneas (retorno de carro y alimentación de línea) se permiten técnicamente enu003Cinput> 's oculto Estado, deben ser escapados por compatibilidad con navegadores más antiguos. Puede hacer esto reemplazando todos los devoluciones de carro (\u000D o \r) y todas las alimentos de la línea (\u000A o \n) con cadenas patentadas que su aplicación reconoce como un retorno de carro o una nueva línea (y también escapó, si está presente en la cadena original).

Las entidades de personaje simplemente no funcionan aquí, debido a los navegadores no conformes que posiblemente saben &#10; y &#13; son nuevas líneas y las quitan del valor.

Ejemplo

Por ejemplo, en PHP, si tuviera echo El valor aprobado a un TextAREA, incluiría las nuevas líneas (y la cadena nocapada).

u003Ctextarea>Algún texto con un incluido
y una nueva línea con r n como valor enviadou003C/textarea>

Sin embargo, en PHP, si tuviera echo el valor para el valor atributo de unu003Cinput> Etiqueta, escaparía de las nuevas líneas con sus cuerdas patentadas (por ejemplo, \r y \n), y escapar en cualquier instancia de sus cadenas propietarias en el valor enviado.

u003Cinput type="hidden" value="Some text with a includedrnand a new linern as submitted value">

Luego, antes de usar el valor en otro lugar (insertar en una base de datos, enviar correos electrónicos, etc.), asegúrese de uncapear el valor enviado, si es necesario.

Seguridades

A medida que la tranquilidad, pregunté actualmente a Whatwg, y Ian Hickson, editor de la especificación HTML, respondieron:

bfrohs Pregunta sobreu003Cinput type=hidden> - ¿Se permiten alimentos en línea y devoluciones de carro en el valor? Están no permitidos específicamente en el estado de texto y el estado de búsqueda, pero no se menciona que no se mencione para el estado oculto. Y, si no, ¿hay una solución HTML aceptable para almacenar datos de formulario de un TextAREA?

Hixie Sí, están permitidos // iirc // por razones heredadas, es posible que desee escapar de ellos, ya que algunos navegadores los normalizan // Olvidé si lo arreglamos o no // en la especificación

Fuente

No dice para qué es esto o para qué tecnología está utilizando, pero debe tener en cuenta que no puede confiar en que el campo oculto permanezca con value = "línea una línea dos", porque un usuario hostil puede manipular con él antes de que se envíe de vuelta en la publicación. Ya que estás poniendo el valor en unu003Ctextarea> Más tarde, definitivamente estará sujeto a, por ejemplo, ataques de secuencia de comandos de sitio cruzado a menos que verifique y/o desinfecte su contenido de campo "Multiline_Data" antes de volver a escribirlo.

Al escribir un valor en un campo oculto y leerlo, generalmente es mejor mantenerlo en el servidor, como un atributo de la sesión, o Pageflow, o lo que sea que su entorno proporcione para hacer este tipo de cosas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top