Почему textarea не является вводом [type = "textarea"]? - PullRequest
151 голосов
/ 12 апреля 2011

Почему существует элемент <textarea> вместо <input type="textarea">?

Ответы [ 5 ]

174 голосов
/ 31 мая 2011

Может быть, это идет слишком далеко назад, но…

Кроме того, я хотел бы предложить, чтобы многострочные текстовые поля имели другой тип (например, «текстовое поле»), чем однострочные поля(«текст»), поскольку они на самом деле являются разными типами вещей и подразумевают разные проблемы (семантику) для обработки на стороне клиента.

- Марк Андреессен, 11 октября 1993

69 голосов
/ 12 апреля 2011

Чтобы его значение могло легко содержать кавычки и символы <>, а также пробелы и переводы строки.

Следующий 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>
48 голосов
/ 12 апреля 2011

A textarea может содержать несколько строк текста, поэтому его нельзя будет предварительно заполнить с помощью атрибута value.

Аналогично, элемент select должен быть своим собственным элементом для размещения option подэлементов.

22 голосов
/ 24 ноября 2013

Это было ограничение технологии на момент ее создания. Мой ответ скопирован с сайта Programmers.SE :

От одного из оригинальных черновиков HTML :

ПРИМЕЧАНИЕ. В первоначальном проекте для форм многострочные текстовые поля были поддерживается элементом Input с TYPE = TEXT. К сожалению это вызывает проблемы для полей с длинными текстовыми значениями. SGML по умолчанию (Набор контрольных количеств) ограничивает длину литералов атрибута всего 240 символов. Объявление HTML 2.0 SGML увеличивает лимит до 1024 символов.

5 голосов
/ 11 ноября 2013

Я понимаю, что это старый пост, но подумал, что это может быть полезно для всех, кто задает тот же вопрос:

Хотя предыдущие ответы, без сомнения, верны, существует более простая причина для различия между текстовой областью и вводом.

Как упоминалось ранее, HTML используется для описания и придания как можно большей семантической структуры веб-контенту, включая формы ввода. Для ввода может использоваться текстовая область , однако текстовая область также может быть помечена как доступная только для чтения с помощью атрибута readonly. Существование такого атрибута не имело бы никакого смысла для типа input и, следовательно, различия.

...