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


Answers:


176

也许这有点太远了,但是…

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

马克·安德森Marc Andreessen),1993年10月11日


18
是的,“不同类型”,不能通过<input type =“ textarea”>达到相同效果吗?blah \ n \ n blah </ input>吗?为什么要使用不同的标签?
Serhiy 2012年

8
w3c非常一致。这是在w3c之前
Mark Cidade 2014年

10
我不知道这是怎么引起这么多投票的。问题不在于'text'和'textarea'之间的区别,而是将多行文本作为<textarea>标签而不是在<input>标签中作为'type = textarea'属性包含的原因。
Foreever

6
@Foreever这将直接获得答案。之所以有此textarea要素,是因为马克·安德森(Marc Andreessen)早在1993年10月就提出了上述理由。
Marcel

5
@Marcel Marc Andreessen建议应该使用其他类型而不是tag。标签的type属性值不同,表示的输入类型也不同input,它们都共享一个input标签。因此,不,此引用不是此问题的答案。
Piotr Dobrogost 2015年

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>

16
我更喜欢w3c起源的神话。
k to z

9
textarea元素没有定义为包含CDATA,你仍然需要使用实体<&等它只是因此它可以处理的空白。
昆汀

我刚刚测试过,是的,您可以在文本区域中放入未编码的<,>和&。并且它成功通过了w3c验证器。
Guillaume Esquevin 2011年

@ktothez:看看我的回答
马塞尔(Marcel)

2
这里没有一个适当的答案。与一般的生活(即在盒子外面)一样,有多种原因使事物保持现状。
JohnK 2013年

49

一个textarea可以包含多行文本,这样一个没有将能够使用预填充它value的属性。

同样,该select元素必须是其自己的元素才能容纳option子元素。


1
为什么不能用valueattr 填充它?textarea无论如何,溢出都会绕到调整大小的下一行。
OJFord 2014年

3
您不能在属性中使用换行符
Mark Cidade 2014年

23

这是技术创建时的局限性。 我的答案是从Programmers.SE复制过来的

来自原始HTML草案之一

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


6

我意识到这是一篇较旧的文章,但认为这可能对任何想知道相同问题的人有所帮助:

尽管先前的答案无疑是有效的,但将文本区域和输入区分开的原因更为简单。

如前所述,HTML用于描述Web内容并尽可能多地赋予其语义结构,包括输入形式。可以将文本区域用于输入,但是也可以通过readonly属性将文本区域标记为只读。这样的属性的存在对输入类型没有任何意义,因此对区分没有任何意义。


9
这听起来很合理,除了也input[type="text"]可以采用readonly属性。现在您指出来,这有点奇怪! w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly
马特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.