Posible añadir saltos de línea en un campo de área de texto mientras se mantiene XHTML 1.0 válido?

StackOverflow https://stackoverflow.com/questions/755944

Pregunta

EDIT: Después de volver a leer mi post creo que estoy siendo un poco confuso sobre cuál es el problema. Voy a tratar de volver a la frase que:

Los usuarios pueden dejar comentarios en un sitio web mediante un campo de área de texto en un formulario. Debería ser posible añadir saltos de línea en el comentario mediante <br />. El comentario se almacena como una cadena en una base de datos MySQL (escapó para que sea seguro) y posteriormente recuperada de la base de datos y se muestran en el sitio. saltos de línea regulares no son reconocidos cuando se visualiza el comentario.

Los usuarios pueden editar sus comentarios, y en ese caso se muestra el comentario original en un campo de área de texto a modificar (ver imagen abajo). El problema es que si hay cualquier <br /> presente, el código no es válido como XHTML 1.0 (ver mensaje de error a continuación).

¿Puedo hacer que el código válido el uso de cualquier otro tipo de salto de línea? Como se ha dicho en los comentarios, línea regular rompe en combinación con xml: space = "preserve" no funciona (saltos de línea se muestran en el campo área de texto, pero no cuando se muestra el comentario como texto normal en el sitio)


pregunta original:

Tengo un formulario web que incluye un campo de área de texto para dejar comentarios, y yo quiero que sea capaz de añadir saltos de línea utilizando <br />. A continuación se muestra un ejemplo sencillo:

volcado de pantalla
(fuente: shipit.se )

funciona como está previsto, sin embargo, no valida como XHTML 1.0 de transición cuando se utiliza el servicio de validación W3C. Este es el error que consigo:

  
      
  1. Error de Línea 90, 1587 Columna: tipo de documento no permite elemento "br" aquí
  2.   
     

…ription" rows="0" cols="0">Test<br />line break</textarea></dd><dt class="cha

     

El elemento nombrado arriba fue encontrado en un contexto en el que no está permitido. Esto podría significar que usted tiene elementos anidados de forma incorrecta - como un elemento de "estilo" en la sección "cuerpo" en lugar de "cabeza" dentro -. O dos elementos que se solapan (que no está permitido)

     

Una causa común de este error es el uso de la sintaxis XHTML en los documentos HTML. Debido a las normas de elementos implícitamente cerrados de HTML, este error puede crear efectos en cascada. Por ejemplo, el uso de etiquetas de "auto-cierre" de XHTML para "meta" y "enlace" en la sección "cabeza" de un documento HTML puede hacer que el programa de análisis para inferir el final de la sección "cabeza" y el comienzo del "cuerpo "sección (donde 'link' y 'meta' no están permitidos, por lo que el error informado).

¿Hay una manera de hacer los cortes de línea de código válido, o necesito encontrar una solución (como por ejemplo el uso de etiquetas específicas para los saltos de línea en el campo de área de texto y luego reemplazarlos con <br /> más adelante cuando se muestra el comentario)?

¿Fue útil?

Solución

Desde el DTD :

  

<!ELEMENT TEXTAREA - - (#PCDATA) -- multi-line text field -->

En el código XHTML de la página, un <textarea> sólo puede contener texto (#PCDATA), y se puede anidar los elementos XHTML dentro del <textarea>.

Sus preguntas parece mostrar dos cosas diferentes. La imagen muestra "<br />" escrito en un <textarea>, mientras que el mensaje del W3C Validador se refiere a un elemento de <br /> escrita en el XHTML de la página dentro del elemento <textarea>.

En el primer caso, que tiene "Test<br />line break" aparecerá al usuario en el área de texto se realiza mediante el uso de las entidades apropiadas, tal como altCognito escribió:

<textarea>Test&lt;br /&gt;line break</textarea>

Cualquier cosa que está siendo introducida por el usuario que se vuelve a mostrar a continuación, dentro de un <textarea> en una nueva página debe ser codificada (es decir, las entidades de uso para &, ", ', <, y >).

Si desea mostrar la entrada de un usuario:

  

ruptura Test<br />line

... como ...

  

Prueba
  salto de línea

... dentro de otra área de texto, a continuación, tendrá que analizar lo que se ha entrado en la <textarea> original y sustituir los <br />s introducidos por el usuario, con saltos de línea normales. Vea de Lucero respuesta .

Otros consejos

¿Usted ha intentado añadir un atributo xml:space="preserve" y utilizar saltos de línea simplemente normales?

¿Por qué no utilizar saltos de línea regulares? Los que trabajan muy bien.

Si desea que aparezca <br />, es necesario codificar las entidades:

&lt;br /&gt;

Acabo de hacer esto y funciona.

<textarea name="contenidoMensaje" id="contenidoMensaje" cols="80" rows="10">
-----Mensaje Original-----
{blank space}
<?php echo str_replace("<br />", "\n", $contenidoMensaje); ?>
</textarea>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top