为什么textarea不是输入[type ="textarea"]?

Dio*_*oso 151 html types textarea input

为什么有一个元素<textarea>而不是<input type="textarea">

Mar*_*cel 174

也许这有点太过分了,但......

另外,我想建议多行文本字段具有与单行字段("text")不同的类型(例如"textarea"),因为它们实际上是不同类型的事物,并且暗示不同的问题(语义)客户端处理.

- Marc Andreessen,1993年10月11日

  • 是的,"不同类型",通过<input type ="textarea"> blah blah \n \n blah </ input>可能无法实现相同的目标?为何选择明确的标签? (17认同)
  • 我想知道这是如何得到这么多的投票.问题不在于'text'和'textarea'之间的区别,而是在<input>标签中将多行文本包含为<textarea>标签而不是'type = textarea'属性的原因. (10认同)
  • w3c非常一致.这是在w3c之前 (8认同)
  • @Foreever这是一个直接的答案.有一个'textarea`元素的原因是因为Marc Andreessen在1993年10月提出它,原因如上所述. (6认同)
  • @Marcel Marc Andreessen建议应该有一个不同的**类型**而不是**标签**.有不同类型的输入由`input`标签的`type`属性的不同值表示,它们都共享一个相同的`input`标签.所以不,这句话不是这个问题的答案. (5认同)
  • @PiotrDobrogost [这是另一篇文章](http://1997.webhistory.org/www.lists/www-talk.1993q4/0179.html)当天晚些时候,他说*"多行文字字段应该有不同的**名称**"*.看起来术语并没有像你现在想象的那样精确地使用,所以不管他是指新标签还是类型值都不容易.我之前的评论也仍然有效. (2认同)
  • 所以复选框与文本输入相同,但单行文本输入与多行文本输入完全不同...... (2认同)

Gui*_*vin 69

因此它的值可以很容易地包含引号和<>字符并尊重空格和换行符.

以下HTML代码成功传递了w3c验证器并显示<,>和&,而无需对其进行编码.它还尊重白色空间.

<!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>
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢w3c起源神话. (15认同)
  • Textarea元素没有定义为包含CDATA,你仍然需要使用`<`,`&`等实体.它只是处理空格. (9认同)
  • 这里没有一个正确的答案.与一般生活一样(即在盒子外面),有多种原因可以让它成为现实. (2认同)

Mar*_*ade 49

A textarea可以包含多行文本,因此无法使用value属性预填充它.

类似地,select元素需要是它自己的元素以容纳option子元素.

  • 有见识的答案! (2认同)
  • 你不能在属性中使用换行符 (2认同)

Izk*_*ata 23

这是技术创建时的一个限制. 我的回答是从Programmers.SE复制的:

来自最初的HTML草稿之一:

注意:在表单的初始设计中,Input元素支持多行文本字段,TYPE = TEXT.不幸的是,这会导致文本值较长的字段出现问题.SGML的默认值(参考数量集)将属性文字的长度限制为仅240个字符.HTML 2.0 SGML声明将限制增加到1024个字符.


小智 5

我意识到这是一篇较旧的帖子,但认为这对任何想知道相同问题的人都有帮助:

虽然之前的答案无疑是有效的,但有一个更简单的原因可以区分textarea和输入.

如前所述,HTML用于描述和提供尽可能多的Web内容语义结构,包括输入表单.textarea 可以用于输入,但是textarea也可以通过readonly属性标记为只读.这种属性的存在对输入类型没有任何意义,因而也就是区别.

  • 这听起来很合理,除了`input [type ="text"]`也可以采用*readonly*属性.现在你指出它有点奇怪!http://www.w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly (8认同)