Там, кстати, также <select>вместо <input type="select">. <input>Просто представляет собой основной элемент ввода. typeАтрибут просто представляет тип значения , которое он держит.
BalusC
Ответы:
176
Может быть, это будет слишком далеко назад, но ...
Кроме того, я хотел бы предложить, чтобы многострочные текстовые поля имели другой тип (например, «textarea»), чем однострочные поля («текст»), поскольку они действительно являются разными типами вещей и подразумевают разные проблемы (семантику) для обработка на стороне клиента.
Да, «другой тип», нельзя ли добиться того же самого через <input type = "textarea"> бла-бла \ n \ n бла </ input>? Почему отдельный тег?
Сергей
8
W3C довольно последовательный. это было до w3c
Марк Сидаде
10
Интересно, как это получило столько голосов. Вопрос не в разнице между text и textarea, а в причине включения многострочного текста в качестве тега <textarea>, а не в качестве атрибута type = textarea в тег <input>.
Навсегда
6
@ Впрочем, это прямой ответ. Причина, по которой есть textareaэлемент, заключается в том, что Марк Андреессен предложил его еще в октябре 1993 года по причинам, указанным выше.
Марсель
5
@Marcel Marc Andreessen предложил использовать другой тип, а не тег . Существуют разные типы ввода, обозначаемые разными значениями typeатрибута inputтега, и все они имеют один и тот же inputтег. Так что нет, эта цитата не является ответом на этот вопрос.
Петр Доброгост
69
Так что его значение может легко содержать кавычки и символы <> и учитывать пробелы и переводы строки.
Следующий HTML-код успешно проходит валидатор w3c и отображает <,> и & без необходимости их кодирования. Это также уважает пробелы.
<!doctype html><htmllang="en"><head><metacharset="UTF-8"/><title>Yes I can</title></head><body><textareaname="test">
I can put < and > and & signs in
my textarea without any problems.
</textarea></body></html>
TEXTAREA элементы не определены как содержащие CDATA, вам все еще нужно для использования лицами <, &и т.д. Это только так он может обрабатывать пробелы.
Квентин,
Я только что проверил это, и да, вы можете поместить незашифрованные <,> и & в текстовое поле. И он успешно прошел валидатор w3c.
Здесь нет одного правильного ответа. Как и в случае с жизнью в целом (т. Е. Вне коробки), существует множество причин, по которым что-то является таким, какое оно есть.
JohnK
49
A textareaможет содержать несколько строк текста, поэтому его нельзя будет предварительно заполнить с помощью valueатрибута.
Точно так же selectэлемент должен быть его собственным элементом для размещения optionподэлементов.
ПРИМЕЧАНИЕ. В исходном проекте для форм многострочные текстовые поля поддерживались элементом Input с TYPE = TEXT. К сожалению, это вызывает проблемы для полей с длинными текстовыми значениями. По умолчанию SGML (набор контрольных количеств) ограничивает длину литералов атрибута только 240 символами. Объявление SGML в HTML 2.0 увеличивает ограничение до 1024 символов.
Я понимаю, что это старый пост, но подумал, что это может быть полезно для всех, кто задает тот же вопрос:
Хотя предыдущие ответы, без сомнения, верны, есть более простая причина для различия между текстовой областью и вводом.
Как упоминалось ранее, HTML используется для описания и придания как можно большей семантической структуры веб-контенту, включая формы ввода. Текстовая область может использоваться для ввода, однако текстовая область также может быть помечена как доступная только для чтения с помощью атрибута только для чтения. Существование такого атрибута не имело бы никакого смысла для типа ввода и, следовательно, различия.
<select>
вместо<input type="select">
.<input>
Просто представляет собой основной элемент ввода.type
Атрибут просто представляет тип значения , которое он держит.Ответы:
Может быть, это будет слишком далеко назад, но ...
- Марк Андреессен, 11 октября 1993 г.
источник
textarea
элемент, заключается в том, что Марк Андреессен предложил его еще в октябре 1993 года по причинам, указанным выше.type
атрибутаinput
тега, и все они имеют один и тот жеinput
тег. Так что нет, эта цитата не является ответом на этот вопрос.Так что его значение может легко содержать кавычки и символы <> и учитывать пробелы и переводы строки.
Следующий HTML-код успешно проходит валидатор w3c и отображает <,> и & без необходимости их кодирования. Это также уважает пробелы.
источник
<
,&
и т.д. Это только так он может обрабатывать пробелы.A
textarea
может содержать несколько строк текста, поэтому его нельзя будет предварительно заполнить с помощьюvalue
атрибута.Точно так же
select
элемент должен быть его собственным элементом для размещенияoption
подэлементов.источник
value
атрибутом? Переполнение переносится на следующую строку при изменении размера вtextarea
любом случае.Это было ограничением технологии на момент ее создания. Мой ответ скопирован с сайта Programmers.SE :
Из одного из оригинальных черновиков HTML :
источник
Я понимаю, что это старый пост, но подумал, что это может быть полезно для всех, кто задает тот же вопрос:
Хотя предыдущие ответы, без сомнения, верны, есть более простая причина для различия между текстовой областью и вводом.
Как упоминалось ранее, HTML используется для описания и придания как можно большей семантической структуры веб-контенту, включая формы ввода. Текстовая область может использоваться для ввода, однако текстовая область также может быть помечена как доступная только для чтения с помощью атрибута только для чтения. Существование такого атрибута не имело бы никакого смысла для типа ввода и, следовательно, различия.
источник
input[type="text"]
может принимать атрибут readonly тоже. Что странно, теперь, когда вы на это указываете! w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly