Sử dụng DIV bên trong FORM có đúng không?


86

Tôi chỉ tự hỏi bạn đang nghĩ gì về thẻ DIV bên trong thẻ FORM?

Tôi cần một cái gì đó như thế này:

<form>
  <input type="text"/>
  <div> some </div>
  <div> another </div>
  <input type="text" />
</form>

Đó là thông lệ chung để sử dụng DIVbên trong FORMhay tôi cần một cái gì đó khác?

Câu trả lời:


133

Nó hoàn toàn ổn.

Các formsẽ nộp chỉ điều khiển loại đầu vào của nó (* cũng Textarea, Select, vv ...).

Bạn không có gì phải lo lắng về một divtrong một form.


2
Làm thế nào về việc sử dụng một biểu mẫu bên trong một div?
Kick Buttowski

1
@KickButtowski Một biểu mẫu bên trong một div không có vấn đề gì cả. Bạn có thể tự mình thử nó tại trình xác thực HTML. Bên cạnh đó, gần như không thể tránh khỏi những ngày này, vì các trang hiện đại được xây dựng trên div. Nếu nó không được cho phép, một trình bao bọc đơn giản hoặc đặt biểu mẫu trong một vùng chứa sẽ khiến trang không hợp lệ.
Nrzonline

Hình thức xác nhận đã ngừng làm việc đối với tôi kể từ khi tôi thêm divs bên trong hình thức
Suhas

28

Bạn hoàn toàn có thể chấp nhận sử dụng DIV bên trong <form>thẻ.

Nếu bạn nhìn vào mặc định CSS 2.1 stylesheet , divpđều ở display: blockthể loại. Sau đó, xem xét đặc tả HTML 4.01 cho phần tử biểu mẫu, chúng không chỉ bao gồm <p>các thẻ mà còn bao gồm các <table>thẻ, vì vậy tất nhiên <div>sẽ đáp ứng các tiêu chí tương tự. Ngoài ra còn có một <legend>thẻ bên trong biểu mẫu trong tài liệu.

Ví dụ: phần sau vượt qua xác thực HTML4 ở chế độ nghiêm ngặt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title>
</head>
<body>
<form id="test" action="test.php">
<div>
  Test: <input name="blah" value="test" type="text">
</div>
</form>
</body>
</html>

11

Bạn có thể sử dụng <div>trong một biểu mẫu - không có vấn đề gì ở đó .... NHƯNG nếu bạn định sử dụng <div>làm nhãn cho inputdont ... labellà một lựa chọn tốt hơn nhiều:

<label for="myInput">My Label</label> 
<input type="textbox" name="MyInput" value="" />

3

Sai khi đặt <input> là con trực tiếp của <form>

Và nhân tiện, <input / > có thể bị lỗi trên một số loại tài liệu

Kiểm tra nó với http://validator.w3.org/check


loại tài liệu không cho phép phần tử "INPUT" ở đây; thiếu một trong thẻ bắt đầu "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS"

<input type = "text" />

Phần tử được đề cập không được phép xuất hiện trong ngữ cảnh mà bạn đã đặt nó; các phần tử được đề cập khác là những phần tử duy nhất được phép ở đó và có thể chứa phần tử được đề cập. Điều này có thể có nghĩa là bạn cần một phần tử chứa hoặc có thể bạn đã quên đóng một phần tử trước đó.

Một nguyên nhân có thể cho thông báo này là bạn đã cố gắng đặt một phần tử cấp khối (chẳng hạn như "<p>" hoặc "<table>") bên trong một phần tử nội tuyến (chẳng hạn như "<a>", "<span> ", hoặc" <font> ").


3

Câu hỏi của bạn không giải quyết được những gì bạn muốn đặt trong các thẻ DIV, đó có thể là lý do tại sao bạn nhận được một số câu trả lời không đầy đủ / sai. Sự thật là bạn có thể, như Royi đã nói, đặt thẻ DIV vào bên trong biểu mẫu của mình. Ví dụ: bạn không muốn làm điều này cho các nhãn, nhưng nếu bạn có một biểu mẫu với một loạt các hộp kiểm mà bạn muốn sắp xếp thành ba cột, thì bằng mọi cách, hãy sử dụng thẻ DIV (hoặc SPAN, HEADER, v.v. .) để hoàn thành giao diện mà bạn đang cố gắng đạt được.


3

Định nghĩa và Cách sử dụng

Thẻ xác định một bộ phận hoặc một phần trong tài liệu HTML.

Thẻ được sử dụng để nhóm các phần tử khối để định dạng chúng theo kiểu. http://www.w3schools.com/tags/tag_div.asp

Cũng DIV - MDN

Phần tử HTML (hoặc Phần tử phân chia tài liệu HTML) là vùng chứa chung cho nội dung luồng, vốn không đại diện cho bất cứ thứ gì. Nó có thể được sử dụng để nhóm các phần tử cho mục đích tạo kiểu (sử dụng thuộc tính lớp hoặc id), hoặc vì chúng chia sẻ các giá trị thuộc tính, chẳng hạn như lang. Nó chỉ nên được sử dụng khi không có yếu tố ngữ nghĩa nào khác (chẳng hạn như hoặc) thích hợp.

Bạn có thể sử dụng div bên trong biểu mẫu, nếu bạn đang nói về việc sử dụng div thay vì bảng, thì hãy google về thiết kế web không tab


3
có thật không? tham khảo w3schools?
Adonis K. Kakoulidis

2
@AdonisK., Tôi biết tất cả về lý do tại sao không nên bao gồm tham chiếu đến w3schools, nhưng tôi tin rằng nó không đáng nhận được phản đối, tôi muốn bạn xem thảo luận này trên Meta: meta.stackexchange.com/questions/120025/… Ngoài ra, tôi đã cập nhật tài liệu tham khảo của DIV từ MDN
Habib

1

Như những người khác đã nói, tất cả đều tốt, bạn có thể làm điều đó tốt. Đối với cá nhân tôi, tôi cố gắng giữ một dạng cấu trúc phân cấp với các phần tử của tôi với divphần tử là phần tử mẹ bên ngoài nhất. Tôi cố gắng sử dụng chỉ table p ulspancác biểu mẫu bên trong. Chỉ giúp tôi dễ dàng theo dõi các mối quan hệ của cha mẹ / con cái trong các trang web của mình .


0

Tôi nhận thấy rằng bất cứ khi nào tôi bắt đầu thẻ biểu mẫu bên trong một div, các anh chị em div tiếp theo sẽ không phải là một phần của biểu mẫu khi tôi kiểm tra (kiểm tra chrome), do đó biểu mẫu của tôi sẽ không bao giờ gửi.

<div>
<form>
<input name='1st input'/>
</div>
<div>
<input name='2nd input'/>
</div>
<input type='submit'/>
</form>

Tôi nhận ra rằng nếu tôi đặt thẻ biểu mẫu bên ngoài các DIV thì nó hoạt động. Thẻ biểu mẫu phải được đặt ở đầu DIV chính. Như hình bên dưới.

<form>
<div>
<input name='1st input'/>
</div>
<div>
<input name='2nd input'/>
</div>
<input type='submit'/>
</form>

-5

Tuyệt đối không! Nó sẽ hiển thị, nhưng nó sẽ không xác thực. Sử dụng nhãn.

Nó không đúng. Nó không thể truy cập được. Bạn thấy nó trên một số trang web vì một số nhà phát triển chỉ lười biếng. Khi tôi đang tuyển dụng các nhà phát triển, đây là một trong những điều đầu tiên tôi kiểm tra trong công việc của các ứng viên. Biểu mẫu thật khó chịu, nhưng hãy dành thời gian và học cách làm đúng cách


-8

Không, nó không phải

<div>thẻ luôn bị lạm dụng để tạo bố cục web. Mục đích tượng trưng của nó là chia một phần / phần trong trang để có thể thêm hoặc áp dụng phong cách riêng biệt cho nó. [w3schools Doc] [W3C]

Nó phụ thuộc nhiều vào những gì bạn có someanothercó.

HTML5, có nhiều thẻ ý nghĩa hợp lý hơn, thay vì có các thẻ bố cục đơn giản. Các section, header, nav, asidetất cả mọi thứ có ý nghĩa ngữ nghĩa riêng của họ để nó. Và được sử dụng để chống lại<div>


1
Tôi có xu hướng đồng ý. Có rất nhiều thứ bạn có thể làm bên trong html. Nhưng vì những nguyên tắc lỏng lẻo đó là lý do tại sao chúng tôi thấy mình đang đào bới ra khỏi mớ hỗn độn của bố cục web theo thẻ với những đoạn mã đầy hack. Cách duy nhất để web có thể phát triển là nếu chúng tôi tiếp tục tuân theo các nguyên tắc mới khi chúng được trình bày cho chúng tôi.
JT Smith

Vâng, tôi cần một số khu vực trên trang web. Người dùng nhấp vào khu vực này và đặt giá trị trên đầu vào biểu mẫu. Phần tử HTML nào phù hợp với trường hợp này?
demas

1
@demas, Đối với việc sử dụng tính năng khử mờ của bạn <select>phù hợp hoàn hảo nếu các lựa chọn được đưa ra, nếu không <a>hoặc <buttons>tốt.
Starx

27
-1 bạn hoàn toàn sai. MỌI TRANG WEB LỚN sử dụng div bên trong một biểu mẫu. bạn đã đưa ra trong html 5 ví dụ không liên quan gì đến câu hỏi. chỉ cho tôi một trang web lớn không có div trong biểu mẫu. người dân nơi đây trong trang web này throuws câu trả lời mà không kiểm tra và lừa dối người dùng khác
Royi Namir

4
cách để không xây dựng một cái gì đó là xem xét cách mã doanh nghiệp đã thực hiện nó như một quy luật. nếu bạn chỉ sử dụng các div đó để chứa văn bản, nếu văn bản áp dụng cho các điều khiển biểu mẫu, hãy sử dụng nhãn. nếu không, hãy sử dụng một p. vấn đề ngữ nghĩa. vấn đề khả năng tiếp cận.
albert
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.