Pourquoi y a-t-il un élément <textarea>
au lieu de <input type="textarea">
?
Peut-être que ça va un peu trop loin en arrière mais…
De plus, j'aimerais suggérer que les champs de texte multilignes ont un type différent (par exemple, "textarea") que les champs à une ligne ("texte"), car ils sont vraiment différents types d'éléments et impliquent différentes questions (sémantique) pour traitement côté client.
Ainsi, sa valeur peut facilement contenir des guillemets et <> caractères et respecter les espaces et les nouvelles lignes.
Le code HTML suivant passe correctement le validateur w3c et affiche <,> et & sans qu'il soit nécessaire de les encoder. Il respecte également les espaces blancs.
<!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>
Un textarea
peut contenir plusieurs lignes de texte, il ne serait donc pas possible de le pré-remplir à l'aide d'un attribut value
.
De même, l'élément select
doit être son propre élément pour accueillir les sous-éléments option
.
C'était une limitation de la technologie au moment de sa création. Ma réponse recopiée de Programmers.SE :
De l'un des originaux projets HTML :
REMARQUE: dans la conception initiale des formulaires, les champs de texte multilignes étaient pris en charge par l'élément Input avec TYPE = TEXT. Malheureusement, cela pose des problèmes pour les champs avec des valeurs de texte longues. La valeur par défaut SGML (Reference Quantity Set) limite la longueur des littéraux d'attribut à 240 caractères seulement. La déclaration HTML 2.0 SGML augmente la limite à 1024 caractères.
Je réalise que ceci est un ancien billet, mais j'ai pensé que cela pourrait être utile à quiconque se posant la même question:
Bien que les réponses précédentes soient sans doute valables, la distinction entre textarea et input est plus simple.
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 aux formulaires de saisie. Une textarea peut être utilisée pour la saisie, mais une textarea peut également être marquée en lecture seule via l'attribut readonly. L'existence d'un tel attribut n'aurait aucun sens pour un type entrée, et donc la distinction.