kiểu đầu vào = văn bản của người khác so với kiểu đầu vào = kiểu tìm kiếm trong trò chơi HTML5


132

Tôi mới sử dụng HTML5 khi bắt đầu làm việc với các trường nhập mẫu mới của HTML5. Khi tôi đang làm việc với các lĩnh vực hình thức đầu vào, đặc biệt <input type="text" /><input type="search" />IMO là không có bất kỳ sự khác biệt trong tất cả các trình duyệt phổ biến bao gồm Safari, Chrome, Firefox và Opera. Và trường tìm kiếm cũng hoạt động như một trường văn bản thông thường.

Vậy, sự khác biệt giữa input type="text"input type="search"trong HTML5 là gì?

Mục đích thực sự của là <input type="search" />gì?


Câu trả lời:


176

Ngay bây giờ, không có một thỏa thuận lớn giữa họ - có lẽ sẽ không bao giờ có. Tuy nhiên, vấn đề là cung cấp cho các nhà sản xuất trình duyệt khả năng làm điều gì đó đặc biệt với nó, nếu họ muốn.

Hãy suy nghĩ về <input type="number">điện thoại di động, đưa lên các bảng số hoặc type="email"đưa ra một phiên bản đặc biệt của bàn phím, với @ và .com và phần còn lại có sẵn.

Trên điện thoại di động, tìm kiếm có thể hiển thị một applet tìm kiếm nội bộ, nếu họ muốn.

Mặt khác, nó giúp các nhà phát triển hiện tại với css.

input[type=search]:after { content : url("magnifying-glass.gif"); }

12
+1 cho hai điểm hợp lệ, 1) internal search applet for mobile phone. 2) ability to make better presentation. Tuy nhiên, tôi phải đợi để chấp nhận câu trả lời, vì tôi muốn chắc chắn rằng không có mục đích nào khác :)
Vijin Paulraj

Ngay bây giờ, không có. Tất cả các đầu vào chỉ là tên tại thời điểm này (như chỉ có hỗ trợ một phần cho đầu vào [type = color]) hoặc các trình duyệt đã thực hiện xử lý đặc biệt của riêng chúng (như type = number hoặc type = email hoặc type = phạm vi). Không có lựa chọn nào khác - trình duyệt này sẽ được xử lý đặc biệt hoặc không. Ngay bây giờ, trong hầu hết các trình duyệt, gõ = search không, và có lẽ sẽ không (ngoại trừ MAYBE làm cho nó trông giống như một hộp tìm kiếm trong iTunes hoặc một số ứng dụng khác). Hiện tại, nó ở đó để BẠN có thể thêm chức năng / bản trình bày bổ sung bằng cách biết đó là hộp tìm kiếm.
Norguard

39
Một điểm khác biệt là nhấn [Esc] trong đầu vào tìm kiếm sẽ xóa kết quả. Siêu tiện dụng nếu người dùng của bạn đang sử dụng nó thường xuyên.
Josh Habdas

@JoshH đó siêu tiện dụng. Bất kỳ ý tưởng nào trình duyệt (và phiên bản) có ảnh hưởng, hiện tại? Tôi hoàn toàn sẵn sàng cập nhật câu trả lời và đưa nó lên trạng thái hiện tại (/ tương lai) của cây thường xanh, với điều kiện là phong cảnh bây giờ rất khác so với một năm rưỡi trước.
Norguard

2
Tôi không khuyên bạn nên sử dụng các yếu tố giả trên các yếu tố thay thế: nó chống lại các tiêu chuẩn , mặc dù hoạt động trong một số trường hợp.
Paul Kozlovitch

29

Nó hoàn toàn không có gì trong hầu hết các trình duyệt. Nó chỉ hoạt động như một văn bản đầu vào. Đây không phải là một vấn đề. Thông số kỹ thuật không yêu cầu nó làm bất cứ điều gì đặc biệt. Các trình duyệt WebKit đối xử với nó hơi khác một chút, chủ yếu là với kiểu dáng.

Một đầu vào tìm kiếm trong WebKit theo mặc định có đường viền trong, các góc được làm tròn và kiểm soát chính tả nghiêm ngặt.

Cũng thế,

Điều này không được ghi lại ở bất cứ nơi nào tôi biết và cũng không có trong thông số kỹ thuật, nhưng nếu bạn thêm một tham số kết quả vào đầu vào, WebKit sẽ áp dụng một kính lúp nhỏ với mũi tên thả xuống hiển thị kết quả trước đó.

<input type=search results=5 name=s>

Tài liệu tham khảo

Trên hết, nó cung cấp một ý nghĩa ngữ nghĩa cho input type.

Cập nhật:

Chrome 51 đã xóa hỗ trợ cho thuộc tính kết quả:


24

Trực quan / chức năng, 2 sự khác biệt nếu loại đầu vào là ' tìm kiếm ': -

  1. Bạn nhận được biểu tượng ' X ' ở cuối hộp nhập / tìm kiếm để xóa văn bản trong hộp
  2. Nhấn phím ' Esc ' trên bàn phím cũng sẽ xóa văn bản

Điều này chắc chắn không xảy ra ở mọi nơi. Trong môi trường này được quan sát?
Stéphane Gourichon


2

Trên thực tế rất cẩn thận về việc giả định nó không làm gì. Khi bạn đi đến kiểu đầu vào với kiểu tìm kiếm, chúng có các thuộc tính nhất định không thể thay đổi. Hãy thử thay đổi đường viền trên một và bạn sẽ thấy nó hoàn toàn không thể. Có một số thuộc tính CSS không được phép khác, hãy kiểm tra điều này để biết tất cả các chi tiết.

Ngoài ra, như Jashwant đã đề cập, có thuộc tính kết quả, mặc dù nó không hoạt động tốt trừ khi bạn cũng bao gồm thuộc tính tự động lưu. Tuy nhiên, trình đơn thả xuống sẽ không hoạt động trong hầu hết các trình duyệt, vì vậy hãy sử dụng một cách nguy hiểm.


1

Có sự khác biệt về trình duyệt trong hành động, khi bạn nhập một số từ rồi nhập ESC vào đầu vào type="search"trong chrome / safari, hộp nhập sẽ bị xóa. nhưng trong type="text"kịch bản, các từ sẽ không được xóa. Vì vậy, hãy cẩn thận chọn loại đặc biệt là khi bạn sử dụng nó cho tính năng tự động hoàn thành hoặc liên quan đến tìm kiếm


1

Điểm thưởng: input type="search"có khả năng sử dụng onsearchthuộc tính (mặc dù tôi đã nhận thấy điều này KHÔNG hoạt động trong Trình duyệt Edge mới của microsofts), loại bỏ sự cần thiết phải viết một onkeypress=if(key=13) { function() }điều tùy chỉnh .


1

sử dụng kiểu nhập = "tìm kiếm" làm cho văn bản của keybord enterkey hiển thị "tìm kiếm", điều này có thể cải thiện trải nghiệm người dùng. tuy nhiên, bạn phải điều chỉnh kiểu nếu sử dụng loại này.


0

Tùy thuộc vào quan điểm của lập trình viên, lập trình viên có thể dễ dàng xác định mục đích của đầu vào bằng cách xem loại và dễ dàng cho kiểu CSS và JavaScript hoặc JQuery để xác minh quy tắc trong đầu vào.


-1

Nhưng nó có ảnh hưởng xấu đến yếu tố đầu vào yout, nếu bạn đặt

<input type="search">

Và trong css của bạn, bạn đặt

input {background: url("images/search_bg.gif");}

Nó sẽ không hiển thị ở tất cả.

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.