Tại sao không phải là textarea một đầu vào [type = Thời gian văn bản]?


153

Tại sao có một yếu tố <textarea>thay vì <input type="textarea">?


1
Nhân tiện cũng có một <select>thay vì <input type="select">. Các <input>chỉ đại diện cho một yếu tố đầu vào cơ bản. Các typethuộc tính chỉ đại diện cho loại giá trị nó giữ.
BalusC

Câu trả lời:


176

Có lẽ điều này sẽ trở lại quá xa, nhưng

Ngoài ra, tôi muốn đề xuất rằng các trường văn bản nhiều dòng có một loại khác (ví dụ: văn bản văn bản ") so với các trường đơn dòng (" văn bản "), vì chúng thực sự là các loại khác nhau và ngụ ý các vấn đề khác nhau (ngữ nghĩa) cho xử lý phía khách hàng.

- Marc Andreessen, ngày 11 tháng 10 năm 1993


18
Có, "loại khác nhau", không thể giống nhau đã đạt được thông qua <input type = "textarea"> blah blah \ n \ n blah </ input>? Tại sao một thẻ khác biệt?
Serhiy

8
w3c là khá nhất quán. đây là trước w3c
Mark Cidade

10
Tôi tự hỏi làm thế nào điều này có nhiều upvote này. Câu hỏi không phải là về sự khác biệt giữa 'text' và 'textarea', mà là lý do bao gồm văn bản nhiều dòng dưới dạng thẻ <textarea> chứ không phải là thuộc tính 'type = textarea' trong thẻ <input>.
Trước

6
@Foreever đây là về một câu trả lời trực tiếp như nó được. Lý do có một textareayếu tố là bởi vì Marc Andreessen đã đề xuất nó trở lại vào tháng 10 năm 1993 vì những lý do như được trích dẫn ở trên.
Marcel

5
@Marcel Marc Andreessen đề xuất rằng nên có một loại khác không gắn thẻ . Có nhiều loại đầu vào khác nhau được biểu thị bằng các giá trị khác nhau của typethuộc tính của inputthẻ và tất cả chúng đều có chung một và cùng một inputthẻ. Vì vậy, không, trích dẫn này không phải là một câu trả lời cho câu hỏi này.
Piotr Dobrogost

69

Vì vậy, giá trị của nó có thể dễ dàng chứa dấu ngoặc kép và <> ký tự và tôn trọng khoảng trắng và dòng mới.

Mã HTML sau đây vượt qua thành công trình xác nhận w3c và hiển thị <,> và & không cần mã hóa chúng. Nó cũng tôn trọng các khoảng trắng.

<!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
Tôi muốn một huyền thoại nguồn gốc w3c.
k đến z

9
Textarea yếu tố không được định nghĩa là chứa CDATA, bạn vẫn cần phải tổ chức sử dụng cho <, &vv Nó chỉ là để nó có thể xử lý khoảng trắng.
Quentin

Tôi vừa thử nghiệm nó và vâng, bạn có thể đặt </> chưa được mã hóa và & trong một vùng văn bản. Và nó thành công vượt qua trình xác nhận w3c.
Guillaume Esquevin


2
Không có một câu trả lời thích hợp nào ở đây. Như với cuộc sống nói chung (ví dụ, bên ngoài một cái hộp), có nhiều lý do cho một cái gì đó là như vậy.
JohnK

49

A textareacó thể chứa nhiều dòng văn bản, vì vậy người ta sẽ không thể điền trước nó bằng một valuethuộc tính.

Tương tự, selectphần tử cần phải là phần tử riêng của nó để chứa optioncác phần tử phụ.


1
Tại sao người ta không thể đưa nó vào valueattr? Tràn đầy kết thúc đến dòng tiếp theo thay đổi kích thước của textareaanyway.
OJFord

3
bạn không thể sử dụng ngắt dòng trong các thuộc tính
Đánh dấu Cidade

23

Đó là một hạn chế của công nghệ tại thời điểm nó được tạo ra. Câu trả lời của tôi được sao chép từ Lập trình viên. E :

Từ một trong những bản nháp HTML gốc :

GHI CHÚ: Trong thiết kế ban đầu cho các biểu mẫu, các trường văn bản nhiều dòng được phần tử Nhập hỗ trợ với TYPE = TEXT. Thật không may, điều này gây ra vấn đề cho các trường có giá trị văn bản dài. Mặc định của SGML (Bộ số lượng tham chiếu) giới hạn độ dài của chữ thuộc tính chỉ còn 240 ký tự. Khai báo SGML HTML 2.0 tăng giới hạn lên 1024 ký tự.


6

Tôi nhận ra đây là một bài viết cũ hơn, nhưng nghĩ rằng điều này có thể hữu ích cho bất cứ ai thắc mắc cùng một câu hỏi:

Mặc dù các câu trả lời trước đây không còn nghi ngờ gì nữa, nhưng có một lý do đơn giản hơn để phân biệt giữa textarea và đầu vào.

Như đã đề cập trước đây, HTML được sử dụng để mô tả và cung cấp càng nhiều cấu trúc ngữ nghĩa cho nội dung web càng tốt, bao gồm cả các biểu mẫu đầu vào. Một textarea có thể được sử dụng cho đầu vào, tuy nhiên một textarea cũng có thể được đánh dấu là chỉ đọc thông qua thuộc tính chỉ đọc. Sự tồn tại của một thuộc tính như vậy sẽ không có ý nghĩa gì đối với một kiểu đầu vào , và do đó là sự khác biệt.


9
Điều này nghe có vẻ hợp lý, ngoại trừ input[type="text"]có thể có thuộc tính chỉ đọc . Đó là loại kỳ lạ, bây giờ bạn chỉ ra nó! w3.org/TR/html-markup/input.text.html#input.text.attrs.readonly
Matt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.