2011-04-12 22 views

Respuesta

165

Tal vez esto va un poco demasiado lejos, pero ...

Además, me gustaría sugerir que los campos de texto de varias líneas tienen un tipo diferente (por ejemplo, “área de texto ') que los campos de una sola línea (' texto "), tal como son los diferentes tipos de cosas, e implican cuestiones diferentes (semántica) para el manejo del lado del cliente

-. Marc Andreessen, 11 October 1993

+15

Sí, "tipo diferente", no se podría haber logrado lo mismo a través de blah blah \ n \ n bla? ¿Por qué una etiqueta distinta? – Serhiy

+1

@Serhiy Estoy de acuerdo, no tiene mucho sentido presentar un nuevo elemento para eso (al igual que la contraseña no tiene su propio elemento). Lamentablemente, W3C no siempre es consistente. – bart

+8

w3c es bastante consistente. esto fue antes de w3c –

67

Para que su valor pueda contener fácilmente comillas y <> caracteres y respetar espacios en blanco y saltos de línea.

El siguiente código HTML pasa satisfactoriamente el w3c validator y muestra <,> y & sin la necesidad de codificarlos. También respeta los espacios en blanco.

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8" /> 
    <title>Yes I can</title> 
</head> 
<body> 
    <textarea name="test"> 
     I can put <and> and & signs in 
     my textarea without any problems. 
    </textarea> 
</body> 
</html> 
+14

Prefiero un mito de origen w3c. –

+8

Los elementos Textarea no están definidos como que contienen CDATA, aún necesita usar entidades para '<', '&', etc.Es solo para que pueda manejar el espacio en blanco. – Quentin

+0

Acabo de probarlo y sí, puede poner sin codificar <, > y & dentro de un área de texto. Y pasa con éxito el validador w3c. –

44

Un textarea puede contener varias líneas de texto, por lo que no sería capaz de rellenar previamente usando un atributo value.

De forma similar, el elemento select debe ser su propio elemento para acomodar los subelementos option.

+2

¡Respuesta perspicaz! – JohnK

+0

¿Por qué no podría uno poblarlo con el valor 'attr? El desbordamiento se ajusta a la siguiente línea al redimensionar el 'textarea' de todos modos. – OJFord

+2

no se pueden usar saltos de línea en los atributos –

5

Sé que esto es un mensaje más antiguo, pero que esto podría ser útil para cualquier persona Suena la misma pregunta:

Si bien las respuestas anteriores son sin duda válidas, existe una razón más simple para la distinción entre textarea y entrada.

Como se mencionó anteriormente, HTML se utiliza para describir y proporcionar la mayor estructura semántica posible al contenido web, incluidos los formularios de entrada. Se puede usar un área de texto como entrada, sin embargo, un área de texto también se puede marcar como de solo lectura mediante el atributo de solo lectura. La existencia de tal atributo no tendría ningún sentido para un tipo de entrada , y por lo tanto la distinción.

+7

Esto suena razonable, excepto que 'input [type =" text "]' puede tomar * readonly * atributo también. Lo cual es algo extraño, ¡ahora que lo señalas! http://www.w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly – Matt

16

Era una limitación de la tecnología en el momento en que se creó. My answer copied over from Programmers.SE:

Desde uno de los originales HTML drafts:

NOTA: En el diseño inicial para formularios, campos de texto multilínea eran soportado por el elemento de entrada con type = text. Desafortunadamente, este causa problemas para los campos con valores largos de texto. El valor predeterminado de SGML (conjunto de cantidades de referencia) limita la longitud de los literales de atributo a solo 240 caracteres. La declaración HTML 2.0 SGML aumenta el límite a 1024 caracteres.

+0

Esta debería ser la respuesta aceptada. – zfrisch