Nawiasem mówiąc, jest też <select>zamiast <input type="select">. Po <input>prostu reprezentuje podstawowy element wejściowy. typeAtrybut tylko reprezentuje typ wartości w jego posiadaniu.
BalusC
Odpowiedzi:
176
Może to trochę za daleko, ale…
Chciałbym również zasugerować, że wielowierszowe pola tekstowe mają inny typ (np. „Textarea”) niż pola jednowierszowe („tekst”), ponieważ w rzeczywistości są to różne typy rzeczy i implikują różne kwestie (semantykę) dla obsługa po stronie klienta.
Tak, „inny typ”, czy to samo nie można osiągnąć za pomocą <input type = "textarea"> bla bla \ n \ n bla </input>? Dlaczego odrębny tag?
Serhiy
8
w3c jest dość spójny. to było przed w3c
Mark Cidade
10
Zastanawiam się, jak to zyskało tak dużo głosów Pytanie nie dotyczy różnicy między „text” a „textarea”, ale powodem włączenia wielowierszowego tekstu jako znacznika <textarea>, a nie jako atrybutu „type = textarea” w tagu <input>.
Foreever
6
@ Na zawsze jest to tak bezpośrednia odpowiedź, jak tylko się da. Przyczyną takiego textareaelementu jest to, że Marc Andreessen zaproponował go w październiku 1993 r. Z powodów wymienionych powyżej.
Marcel
5
@Marcel Marc Andreessen zasugerował, że powinien istnieć inny typ, a nie tag . Istnieją różne typy danych wejściowych oznaczone różnymi wartościami typeatrybutu inputtagu i wszystkie mają ten sam inputtag. Więc nie, ten cytat nie jest odpowiedzią na to pytanie.
Piotr Dobrogost
69
Aby jego wartość mogła z łatwością zawierać cudzysłowy i znaki <> oraz uwzględniać spacje i znaki nowej linii.
Poniższy kod HTML pomyślnie przeszedł walidator w3c i wyświetla <,> oraz & bez potrzeby ich kodowania. Szanuje również białe spacje.
<!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>
Nie ma tu jednej właściwej odpowiedzi. Podobnie jak w przypadku życia w ogóle (tj. Poza pudełkiem), istnieje wiele powodów, dla których coś jest takie, jakie jest.
JohnK
49
A textareamoże zawierać wiele wierszy tekstu, więc nie można byłoby go wstępnie wypełnić za pomocą valueatrybutu.
Podobnie selectelement musi być własnym elementem, aby pomieścić optionelementy podrzędne.
UWAGA: W początkowym projekcie formularzy wielowierszowe pola tekstowe były obsługiwane przez element wejściowy z TYPE = TEKST. Niestety powoduje to problemy w przypadku pól z długimi wartościami tekstowymi. Wartość domyślna SGML (Reference Quantity Set) ogranicza długość literałów atrybutów do tylko 240 znaków. Deklaracja HTML 2.0 SGML zwiększa limit do 1024 znaków.
Zdaję sobie sprawę, że to starszy post, ale pomyślałem, że może to być pomocne dla każdego, kto zastanawia się nad tym samym pytaniem:
Chociaż poprzednie odpowiedzi są bez wątpienia ważne, istnieje prostszy powód rozróżnienia między obszarem tekstowym a danymi wejściowymi.
Jak wspomniano wcześniej, HTML jest używany do opisywania i nadawania możliwie największej struktury semantycznej zawartości sieci Web, w tym formularzy wejściowych. Pole tekstowe może być używane do wprowadzania danych, jednak obszar tekstowy może być również oznaczony jako tylko do odczytu za pomocą atrybutu tylko do odczytu. Istnienie takiego atrybutu nie miałoby sensu dla typu danych wejściowych , a tym samym dla rozróżnienia.
<select>
zamiast<input type="select">
. Po<input>
prostu reprezentuje podstawowy element wejściowy.type
Atrybut tylko reprezentuje typ wartości w jego posiadaniu.Odpowiedzi:
Może to trochę za daleko, ale…
- Marc Andreessen, 11 października 1993
źródło
textarea
elementu jest to, że Marc Andreessen zaproponował go w październiku 1993 r. Z powodów wymienionych powyżej.type
atrybutuinput
tagu i wszystkie mają ten saminput
tag. Więc nie, ten cytat nie jest odpowiedzią na to pytanie.Aby jego wartość mogła z łatwością zawierać cudzysłowy i znaki <> oraz uwzględniać spacje i znaki nowej linii.
Poniższy kod HTML pomyślnie przeszedł walidator w3c i wyświetla <,> oraz & bez potrzeby ich kodowania. Szanuje również białe spacje.
źródło
<
,&
itp Jest tak może obsłużyć spacje.A
textarea
może zawierać wiele wierszy tekstu, więc nie można byłoby go wstępnie wypełnić za pomocąvalue
atrybutu.Podobnie
select
element musi być własnym elementem, aby pomieścićoption
elementy podrzędne.źródło
value
atr? Przepełnienie zawija do następnej linii przy zmianie rozmiarutextarea
mimo wszystko.Było to ograniczenie technologii w czasie jej tworzenia. Moja odpowiedź została skopiowana od Programmers.SE :
Z jednej z oryginalnych wersji roboczych HTML :
źródło
Zdaję sobie sprawę, że to starszy post, ale pomyślałem, że może to być pomocne dla każdego, kto zastanawia się nad tym samym pytaniem:
Chociaż poprzednie odpowiedzi są bez wątpienia ważne, istnieje prostszy powód rozróżnienia między obszarem tekstowym a danymi wejściowymi.
Jak wspomniano wcześniej, HTML jest używany do opisywania i nadawania możliwie największej struktury semantycznej zawartości sieci Web, w tym formularzy wejściowych. Pole tekstowe może być używane do wprowadzania danych, jednak obszar tekstowy może być również oznaczony jako tylko do odczytu za pomocą atrybutu tylko do odczytu. Istnienie takiego atrybutu nie miałoby sensu dla typu danych wejściowych , a tym samym dla rozróżnienia.
źródło
input[type="text"]
może również przyjąć atrybut readonly . Co jest trochę dziwne, skoro już to wskazałeś! w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly