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

发布于 2024-11-01 03:38:45 字数 123 浏览 0 评论 0 原文

为什么有一个元素

Why is there an element <textarea> instead of <input type="textarea">?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

想你的星星会说话 2024-11-08 03:38:45

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

此外,我想建议多行文本字段具有与单行字段(“文本”)不同的类型(例如“文本区域”),因为它们确实是不同类型的事物,并且意味着不同的问题(语义)用于客户端处理。

Marc Andreessen,1993 年 10 月 11 日

Maybe this is going a bit too far back but…

Also, I’d like to suggest that multiline text fields have a different type (e.g. “textarea") than single-line fields ("text"), as they really are different types of things, and imply different issues (semantics) for client-side handling.

Marc Andreessen, 11 October 1993

把梦留给海 2024-11-08 03:38:45

这样它的值就可以轻松包含引号和<>字符并尊重空格和换行符。

以下 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>

So that its value can easily contain quotes and <> characters and respect whitespace and newlines.

The following HTML code successfully pass the w3c validator and displays <,> and & without the need to encode them. It also respects the white spaces.

<!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>
聆听风音 2024-11-08 03:38:45

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

同样,select 元素需要有自己的元素来容纳option 子元素。

A textarea can contain multiple lines of text, so one wouldn't be able to pre-populate it using a value attribute.

Similarly, the select element needs to be its own element to accommodate option sub-elements.

木格 2024-11-08 03:38:45

这是当时技术的限制。 我的答案是从 Programmers.SE 复制过来的

来自原始的HTML 草稿

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

It was a limitation of the technology at the time it was created. My answer copied over from Programmers.SE:

From one of the original HTML drafts:

NOTE: In the initial design for forms, multi-line text fields were
supported by the Input element with TYPE=TEXT. Unfortunately, this
causes problems for fields with long text values. SGML's default
(Reference Quantity Set) limits the length of attribute literals to
only 240 characters. The HTML 2.0 SGML declaration increases the limit
to 1024 characters.

心意如水 2024-11-08 03:38:45

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

虽然前面的答案无疑是有效的,但文本区域和输入之间的区别有一个更简单的原因。

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

I realize this is an older post, but thought this might be helpful to anyone wondering the same question:

While the previous answers are no doubt valid, there is a more simple reason for the distinction between textarea and input.

As mentioned previously, HTML is used to describe and give as much semantic structure to web content as possible, including input forms. A textarea may be used for input, however a textarea can also be marked as read only via the readonly attribute. The existence of such an attribute would not make any sense for an input type, and thus the distinction.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文