Por cierto, también hay un en <select>lugar de <input type="select">. El <input>just representa un elemento básico de entrada. El typeatributo solo representa el tipo del valor que posee.
BalusC
Respuestas:
176
Tal vez esto está yendo demasiado atrás, 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"), ya que realmente son diferentes tipos de cosas e implican diferentes problemas (semántica) para manejo del lado del cliente.
Sí, "tipo diferente", ¿no podría haberse logrado lo mismo a través de <input type = "textarea"> bla, bla, \ n \ n, bla, </input>? ¿Por qué una etiqueta distinta?
Serhiy
8
w3c es bastante consistente. esto fue antes de w3c
Mark Cidade
10
Me pregunto cómo esto obtuvo tanto voto. La pregunta no es sobre la diferencia entre 'texto' y 'área de texto', sino la razón para incluir el texto de varias líneas como etiqueta <textarea> en lugar de como un atributo 'type = textarea' en la etiqueta <input>.
Foreever
66
@Foreever esta es una respuesta tan directa como es posible. La razón por la que hay un textareaelemento es porque Marc Andreessen lo propuso en octubre de 1993 por las razones citadas anteriormente.
Marcel
55
@Marcel Marc Andreessen sugirió que debería haber un tipo diferente, no etiqueta . Existen diferentes tipos de entrada denotados por diferentes valores de typeatributo de inputetiqueta y todos comparten una misma inputetiqueta. Entonces no, esta cita no es una respuesta a esta pregunta.
Piotr Dobrogost
69
Para que su valor pueda contener fácilmente comillas y caracteres <> y respetar espacios en blanco y nuevas líneas.
El siguiente código HTML pasa con éxito el validador w3c y muestra <,> y & sin la necesidad de codificarlos. También respeta los espacios en blanco.
<!doctype html><htmllang="en"><head><metacharset="UTF-8"/><title>Yes I can</title></head><body><textareaname="test">
I can put < and > and & signs in
my textarea without any problems.
</textarea></body></html>
Textarea elementos que no se definen como CDATA que contiene, todavía se necesita para uso entidades <, &etc. Es sólo por lo que puede manejar espacios en blanco.
Quentin
Lo acabo de probar y sí, puedes poner <,> y & sin codificar dentro de un área de texto. Y pasó con éxito el validador w3c.
No hay una respuesta adecuada aquí. Al igual que con la vida en general (es decir, fuera de una caja), hay múltiples razones para que algo sea como es.
JohnK
49
A textareapuede contener varias líneas de texto, por lo que no se podría rellenar previamente con un valueatributo.
Del mismo modo, el selectelemento debe ser su propio elemento para acomodar optionsubelementos.
NOTA: En el diseño inicial de los formularios, los campos de texto de varias líneas fueron compatibles con el elemento Input con TYPE = TEXT. Desafortunadamente, esto causa problemas para los campos con valores de texto largos. El valor predeterminado de SGML (Conjunto de cantidad 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.
Me doy cuenta de que esta es una publicación anterior, pero pensé que podría ser útil para cualquiera que se pregunte la misma pregunta:
Si bien las respuestas anteriores son sin duda válidas, hay una razón más simple para la distinción entre textarea e input.
Como se mencionó anteriormente, el HTML se utiliza para describir y proporcionar la mayor estructura semántica al contenido web posible, incluidos los formularios de entrada. Se puede usar un área de texto para la entrada, sin embargo, un área de texto también se puede marcar como de solo lectura a través del 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.
<select>
lugar de<input type="select">
. El<input>
just representa un elemento básico de entrada. Eltype
atributo solo representa el tipo del valor que posee.Respuestas:
Tal vez esto está yendo demasiado atrás, pero ...
- Marc Andreessen, 11 de octubre de 1993
fuente
textarea
elemento es porque Marc Andreessen lo propuso en octubre de 1993 por las razones citadas anteriormente.type
atributo deinput
etiqueta y todos comparten una mismainput
etiqueta. Entonces no, esta cita no es una respuesta a esta pregunta.Para que su valor pueda contener fácilmente comillas y caracteres <> y respetar espacios en blanco y nuevas líneas.
El siguiente código HTML pasa con éxito el validador w3c y muestra <,> y & sin la necesidad de codificarlos. También respeta los espacios en blanco.
fuente
<
,&
etc. Es sólo por lo que puede manejar espacios en blanco.A
textarea
puede contener varias líneas de texto, por lo que no se podría rellenar previamente con unvalue
atributo.Del mismo modo, el
select
elemento debe ser su propio elemento para acomodaroption
subelementos.fuente
value
atributo? El desbordamiento se ajusta a la siguiente línea al cambiar el tamaño detextarea
todos modos.Era una limitación de la tecnología en el momento en que se creó. Mi respuesta se copió de Programmers.SE :
De uno de los borradores HTML originales :
fuente
Me doy cuenta de que esta es una publicación anterior, pero pensé que podría ser útil para cualquiera que se pregunte la misma pregunta:
Si bien las respuestas anteriores son sin duda válidas, hay una razón más simple para la distinción entre textarea e input.
Como se mencionó anteriormente, el HTML se utiliza para describir y proporcionar la mayor estructura semántica al contenido web posible, incluidos los formularios de entrada. Se puede usar un área de texto para la entrada, sin embargo, un área de texto también se puede marcar como de solo lectura a través del 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.
fuente
input[type="text"]
puede tomar el atributo de solo lectura . ¡Lo cual es un poco extraño, ahora que lo señala! w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly