Il y a d'ailleurs aussi un <select>au lieu de <input type="select">. Le <input>just représente un élément d'entrée de base. L' typeattribut représente simplement le type de la valeur qu'il contient.
BalusC
Réponses:
176
Peut-être que ça va un peu trop loin mais…
De plus, j'aimerais suggérer que les champs de texte multiligne ont un type différent (par exemple, "textarea") que les champs sur une seule ligne ("texte"), car ils sont vraiment différents types de choses et impliquent des problèmes (sémantiques) différents pour gestion côté client.
Oui, "type différent", la même chose n'aurait-elle pas pu être obtenue via <input type = "textarea"> bla bla \ n \ n bla </input>? Pourquoi une balise distincte?
Serhiy
8
w3c est assez cohérent. c'était avant le w3c
Mark Cidade
10
Je me demande comment cela a suscité autant de votes positifs. La question ne concerne pas la différence entre «text» et «textarea», mais la raison pour laquelle le texte multiligne est inclus comme balise <textarea> plutôt que comme attribut «type = textarea» dans la balise <input>.
Foreever
6
@Foreever, c'est une réponse aussi directe que possible. La raison pour laquelle il y a un textareaélément est que Marc Andreessen l'a proposé en octobre 1993 pour les raisons citées ci-dessus.
Marcel
5
@Marcel Marc Andreessen a suggéré qu'il devrait y avoir un autre de type non étiquette . Il existe différents types d'entrée désignés par différentes valeurs d' typeattribut de inputbalise et ils partagent tous une seule et même inputbalise. Donc non, cette citation n'est pas une réponse à cette question.
Piotr Dobrogost
69
Pour que sa valeur puisse facilement contenir des guillemets et des caractères <> et respecter les espaces et les retours à la ligne.
Le code HTML suivant passe avec succès le validateur w3c et affiche <,> et & sans avoir besoin de les coder. Il respecte également les espaces blancs.
<!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 éléments ne sont pas définis comme contenant CDATA, vous avez encore besoin d'entités d'utilisation pour <, &etc. Il est juste de sorte qu'il peut gérer les espaces.
Quentin le
Je viens de le tester et oui, vous pouvez mettre <,> et & non codés dans une zone de texte. Et il passe avec succès le validateur w3c.
Il n'y a pas une seule bonne réponse ici. Comme pour la vie en général (c'est-à-dire en dehors d'une boîte), il y a de multiples raisons pour lesquelles quelque chose est tel qu'il est.
JohnK
49
Un textareapeut contenir plusieurs lignes de texte, donc on ne pourrait pas le pré-remplir à l'aide d'unvalue attribut.
De même, l' selectélément doit être son propre élément pour accueillir des optionsous-éléments.
REMARQUE: dans la conception initiale des formulaires, les champs de texte multiligne étaient pris en charge par l'élément d'entrée avec TYPE = TEXT. Malheureusement, cela pose des problèmes pour les champs avec des valeurs de texte longues. La valeur par défaut de SGML (Reference Quantity Set) limite la longueur des littéraux d'attribut à seulement 240 caractères. La déclaration SGML HTML 2.0 augmente la limite à 1024 caractères.
Je me rends compte qu'il s'agit d'un article plus ancien, mais j'ai pensé que cela pourrait être utile à quiconque se pose la même question:
Bien que les réponses précédentes soient sans aucun doute valables, il existe une raison plus simple à la distinction entre zone de texte et entrée.
Comme mentionné précédemment, HTML est utilisé pour décrire et donner autant de structure sémantique que possible au contenu Web, y compris les formulaires d'entrée. Une zone de texte peut être utilisée pour la saisie, mais une zone de texte peut également être marquée comme lecture seule via l'attribut readonly. L'existence d'un tel attribut n'aurait aucun sens pour un type d' entrée , et donc la distinction.
<select>
au lieu de<input type="select">
. Le<input>
just représente un élément d'entrée de base. L'type
attribut représente simplement le type de la valeur qu'il contient.Réponses:
Peut-être que ça va un peu trop loin mais…
- Marc Andreessen, 11 octobre 1993
la source
textarea
élément est que Marc Andreessen l'a proposé en octobre 1993 pour les raisons citées ci-dessus.type
attribut deinput
balise et ils partagent tous une seule et mêmeinput
balise. Donc non, cette citation n'est pas une réponse à cette question.Pour que sa valeur puisse facilement contenir des guillemets et des caractères <> et respecter les espaces et les retours à la ligne.
Le code HTML suivant passe avec succès le validateur w3c et affiche <,> et & sans avoir besoin de les coder. Il respecte également les espaces blancs.
la source
<
,&
etc. Il est juste de sorte qu'il peut gérer les espaces.Un
textarea
peut contenir plusieurs lignes de texte, donc on ne pourrait pas le pré-remplir à l'aide d'unvalue
attribut.De même, l'
select
élément doit être son propre élément pour accueillir desoption
sous-éléments.la source
value
attr? Le débordement passe à la ligne suivante lors du redimensionnement dutextarea
quand même.C'était une limitation de la technologie au moment où elle a été créée. Ma réponse copiée de Programmers.SE :
À partir de l'un des brouillons HTML d' origine :
la source
Je me rends compte qu'il s'agit d'un article plus ancien, mais j'ai pensé que cela pourrait être utile à quiconque se pose la même question:
Bien que les réponses précédentes soient sans aucun doute valables, il existe une raison plus simple à la distinction entre zone de texte et entrée.
Comme mentionné précédemment, HTML est utilisé pour décrire et donner autant de structure sémantique que possible au contenu Web, y compris les formulaires d'entrée. Une zone de texte peut être utilisée pour la saisie, mais une zone de texte peut également être marquée comme lecture seule via l'attribut readonly. L'existence d'un tel attribut n'aurait aucun sens pour un type d' entrée , et donc la distinction.
la source
input[type="text"]
peut également prendre l' attribut readonly . Ce qui est assez étrange, maintenant que vous le faites remarquer! w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly