为啥 textarea 不是 input[type="textarea"]?
Posted
技术标签:
【中文标题】为啥 textarea 不是 input[type="textarea"]?【英文标题】:Why isn't textarea an input[type="textarea"]?为什么 textarea 不是 input[type="textarea"]? 【发布时间】:2011-08-03 23:39:30 【问题描述】:为什么有一个元素<textarea>
而不是<input type="textarea">
?
【问题讨论】:
还有一个<select>
而不是<input type="select">
。 <input>
只代表一个基本的输入元素。 type
属性只代表它所持有的值的类型。
【参考方案1】:
也许这有点太远了,但是……
另外,我想建议多行文本字段具有与单行字段(“文本”)不同的类型(例如“textarea”),因为它们确实是不同类型的事物,并暗示不同的问题(语义)用于客户端处理。
——Marc Andreessen, 11 October 1993
【讨论】:
是的,“不同的类型”,难道不能通过 blah blah \n \n blah 来实现吗?为什么要使用不同的标签? w3c 非常一致。这是在 w3c 之前 我想知道这是怎么得到这么多赞的。问题不在于 'text' 和 'textarea' 之间的区别,而在于将多行文本包含为 @Foreever 这是最直接的答案。之所以有textarea
元素,是因为 Marc Andreessen 早在 1993 年 10 月就出于上述原因提出了它。
@Marcel Marc Andreessen 建议应该有一个不同的 type 而不是 tag。 input
标签的type
属性的不同值表示不同类型的输入,它们都共享一个相同的input
标签。所以不,这句话不是这个问题的答案。【参考方案2】:
这样它的值可以很容易地包含引号和 字符并尊重空格和换行符。
以下 html 代码成功传递了 w3c validator 并显示 和 & 而无需对其进行编码。它还尊重空白。
<!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>
【讨论】:
我更喜欢 w3c 起源神话。 Textarea 元素未定义为包含 CDATA,您仍然需要使用<
、&
等实体。它只是为了它可以处理空白。
我刚刚测试过,是的,您可以将未编码的 和 & 放在文本区域中。它成功通过了 w3c 验证器。
@ktothez:见my answer。
这里没有一个正确的答案。与一般的生活(即,在盒子外)一样,有多种原因会导致事物成为现实。【参考方案3】:
textarea
可以包含多行文本,因此无法使用 value
属性预先填充它。
同样,select
元素必须是它自己的元素才能容纳 option
子元素。
【讨论】:
为什么不能用value
attr 填充它?无论如何,在调整 textarea
的大小时,溢出会换行到下一行。
你不能在属性中使用换行符【参考方案4】:
这是技术在创建时的限制。 My answer copied over from Programmers.SE:
来自原HTML drafts之一:
注意:在表单的初始设计中,多行文本字段是 由 TYPE=TEXT 的 Input 元素支持。不幸的是,这 导致具有长文本值的字段出现问题。 SGML 的默认值 (参考数量集)将属性文字的长度限制为 只有 240 个字符。 HTML 2.0 SGML 声明增加了限制 最多 1024 个字符。
【讨论】:
【参考方案5】:我知道这是一篇较旧的帖子,但认为这可能对任何想知道相同问题的人有所帮助:
虽然前面的答案无疑是有效的,但区分 textarea 和 input 有一个更简单的原因。
如前所述,HTML 用于描述和尽可能多地为 Web 内容(包括输入表单)提供语义结构。 textarea 可以用于输入,但是 textarea 也可以通过 readonly 属性标记为只读。这样一个属性的存在对于 input 类型没有任何意义,因此区分。
【讨论】:
这听起来很合理,除了input[type="text"]
也可以采用 readonly 属性。这有点奇怪,现在你指出来了! w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly以上是关于为啥 textarea 不是 input[type="textarea"]?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jquery 在 input type="text" 和 textarea 之间切换