<Input> có được hình thành tốt mà không có <form> không?


225

Có hợp lệ để có <input>mà không có nó trong một <form>?

Có một quy trình đánh dấu một số trường trong các trang và chỉ tìm thấy một trang có các trường đầu vào không được đánh dấu như tôi mong đợi.
Nó đã cho tôi một thời gian nhưng làm việc ra rằng quá trình lấy các phần tử biểu mẫu sau đó nhận các trường là nguyên nhân khiến chúng bị bỏ qua vì không có biểu mẫu.


@Adriano - suy nghĩ của tôi chính xác. Chỉ cần chạy qua và xem!
Gabriel Hurley

1
Chắc chắn trình xác nhận w3c , tôi thực sự nên nói thêm rằng một lời giải thích đằng sau tại sao sẽ tốt đẹp.
Greg Domjan

Tôi cũng có nghĩa là nó có thể hợp lệ đối với một số phiên bản html, nhưng không phải cho các phiên bản khác và trong trường hợp đó, trình xác nhận nhanh hơn nhiều so với việc hiểu các tiêu chuẩn.
Quảng trường Adriano Varoli

Câu trả lời:


200

<input>không có <form> vẻ hợp lệ , có (ít nhất là cho html 4.01, nhìn gần cuối ngày 17.2.1):

Các phần tử được sử dụng để tạo các điều khiển thường xuất hiện bên trong phần tử FORM, nhưng cũng có thể xuất hiện bên ngoài khai báo phần tử FORM khi chúng được sử dụng để xây dựng giao diện người dùng. Điều này được thảo luận trong phần về các sự kiện nội tại. Lưu ý rằng các điều khiển bên ngoài một biểu mẫu không thể là các điều khiển thành công.


7
Để có thể gửi dữ liệu biểu mẫu đến một máy chủ (Ajax sang một bên).
Ludovic Kuty

5
@PhilipSmith Tôi biết bình luận của bạn đã được viết từ lâu . Nhưng tại sao bạn nghĩ điều này là kỳ quặc hay vô nghĩa? Tại sao tôi muốn tạo biểu mẫu nếu điều khiển không giao tiếp với máy chủ?
adam-beck

18
"Kiểm soát thành công" là gì?
AlikElzin-kilaka 11/07/2015

22
Khi một biểu mẫu được gửi để xử lý, một số điều khiển có tên của chúng được ghép với giá trị hiện tại của chúng và các cặp này được gửi cùng với biểu mẫu. Các điều khiển cho các cặp tên / giá trị được gửi được gọi là các điều khiển thành công. w3c
SantiBailors

3
@ adam-beck Ví dụ: một trang web AngularJS nào đó xử lý các đầu vào, thao tác dữ liệu và gửi nó đến một api. Các mẫu HTML cho các biểu mẫu có thể được viết mà không có bất kỳ thẻ biểu mẫu nào và chúng giao tiếp với máy chủ tốt.
sr9yar

75

Tôi đã kiểm tra các mục sau với trình xác nhận W3C và nó xác nhận điều này là hợp lệ.

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  <input type='text' />
</body>
</html>

6

Tham chiếu đến một đặc điểm kỹ thuật cập nhật hơn:

HTML 5.2 - Khuyến nghị của W3C (14 tháng 12 năm 2017)

Một phần tử liên quan đến biểu mẫu có thể có mối quan hệ với một <form>phần tử, được gọi là chủ sở hữu biểu mẫu của phần tử. Nếu một phần tử liên quan đến biểu mẫu không được liên kết với một <form>phần tử, chủ sở hữu biểu mẫu của nó được gọi là null.


4

Theo MDN, có thể:

Lưu ý rằng luôn có thể sử dụng tiện ích biểu mẫu bên ngoài một phần tử nhưng nếu bạn làm như vậy, tiện ích biểu mẫu đó không liên quan gì đến bất kỳ biểu mẫu nào. Các vật dụng như vậy có thể được sử dụng bên ngoài một biểu mẫu, nhưng sau đó bạn nên có một kế hoạch đặc biệt cho các vật dụng đó, vì chúng sẽ không tự làm được gì. Bạn sẽ phải tùy chỉnh hành vi của họ với JavaScript.

HTML5 giới thiệu thuộc tính biểu mẫu trên các thành phần biểu mẫu HTML. Nó sẽ cho phép bạn liên kết rõ ràng một yếu tố với một biểu mẫu ngay cả khi nó không được bao trong thẻ biểu mẫu. Thật không may, hiện tại, việc triển khai tính năng này trên các trình duyệt vẫn chưa đủ tốt để dựa vào nó.


2

Tôi biết câu hỏi này khá cũ, tuy nhiên, tôi đã xây dựng thành công nhiều trang nhập dữ liệu phức tạp mà không có thẻ biểu mẫu. Mặc dù nhiều người không coi là "tiêu chuẩn", nhưng KHÔNG được sử dụng đầu vào mà không có a <form>. Các dự án của tôi là những trường hợp mà tôi cần kiểm soát hoàn toàn cách trang hoạt động và hành vi biểu mẫu mặc định đang cản trở. Đã có thể thực hiện xác thực cấp độ trang và trường (sử dụng JS) và "gửi" dữ liệu bằng các cuộc gọi Ajax, v.v ... thực tế, đây là cách ưa thích của tôi những ngày này.

Rất nhiều JS được yêu cầu, nhưng nó không khó và dễ dàng thực hiện dưới dạng mã có thể sử dụng lại.

Ngoài ra còn có các trường hợp khác mà tôi không sử dụng biểu mẫu với các đầu vào như Trang đăng nhập.

Hy vọng lời chứng thực này sẽ giúp được ai đó.


1

Có, bạn có thể có một đầu vào hợp lệ mà không cần một hình thức.


14
Chà, bạn có thể đã thêm một số bằng chứng đằng sau 'có'. Hoặc làm rõ phiên bản HTML nào là đúng. Tuy nhiên, tôi sẽ không hạ thấp bạn.
Quảng trường Adriano Varoli

9
Vì vậy, với lý do của bạn tại sao thậm chí có SO ở tất cả nếu người dùng chỉ có thể đi đến W3 và tự tìm kiếm nó? Tôi cũng sẽ không đánh giá thấp bạn, nhưng tôi phải đồng ý rằng người có nhiều lời giải thích rõ ràng và súc tích hơn sẽ nhận được sự ủng hộ, bởi vì một lời giải thích cũng như câu trả lời đúng là điều hữu ích nhất ở SO.
Mattygabe

-10

Chắc chắn, sử dụng

document.getElementById('your_input_id').validity.valid

để kiểm tra tính hợp lệ của trường một cách linh hoạt.


31
Điều đó không liên quan gì đến tính hợp lệ của đánh dấu, thay vào đó là API xác thực ràng buộc . Làm thế nào câu trả lời này có 8 upvote là ngoài tôi.
user247702
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.