Czy <input> jest dobrze uformowane bez <form>?


225

Czy to jest ważne <input> to bez bycia w <form>?

Przeprowadź proces oznaczania niektórych pól na stronach i właśnie znalazłem stronę z polami wejściowymi, które nie zostały oznaczone zgodnie z oczekiwaniami.
Zajęło mi to trochę czasu, ale zorientowałem się, że proces pobierania elementów formularza, a następnie uzyskiwania pól, spowodował ich pominięcie, ponieważ nie ma formularza.


@Adriano - dokładnie tak myślałem. po prostu uruchom i zobacz!
Gabriel Hurley,

1
Pewny walidator w3c , naprawdę powinienem był dodać wyjaśnienie, dlaczego byłoby miło.
Greg Domjan

Mam na myśli również to, że może być poprawny dla niektórych wersji HTML, ale nie dla innych, i w takim przypadku walidator jest znacznie szybszy niż sprawdzanie standardów.
Adriano Varoli Piazza

Odpowiedzi:


200

<input>bez <form> znaku wydaje się poprawny , tak (przynajmniej dla HTML 4.01, spójrz pod koniec 17.2.1):

Elementy używane do tworzenia formantów zwykle pojawiają się w elemencie FORM, ale mogą także pojawiać się poza deklaracją elementu FORM, gdy są używane do budowania interfejsów użytkownika. Jest to omówione w części dotyczącej zdarzeń wewnętrznych. Pamiętaj, że formanty poza formularzem nie mogą być formantami pomyślnymi.


7
Aby móc przesłać dane formularza na serwer (Ajax na bok).
Ludovic Kuty,

5
@ PhilipSmith Wiem, że twój komentarz został napisany dawno temu. Ale dlaczego uważasz, że jest to dziwne lub bezcelowe? Dlaczego miałbym chcieć utworzyć formularz, jeśli formant nie komunikuje się z serwerem?
adam-beck

18
Co to jest „skuteczna kontrola”?
AlikElzin-kilaka

22
Po przesłaniu formularza do przetworzenia niektóre kontrolki mają sparowane nazwy z bieżącą wartością, a te pary są przesyłane z formularzem. Te elementy sterujące, dla których przesyłane są pary nazwa / wartość, nazywane są elementami sterującymi zakończonymi powodzeniem. w3c
SantiBailors

3
@ adam-beck Na przykład pewna strona internetowa AngularJS obsługuje dane wejściowe, manipuluje danymi i wysyła je do interfejsu API. Szablony HTML formularzy mogą być pisane bez żadnych znaczników formularzy i dobrze komunikują się z serwerem.
sr9yar

75

Sprawdziłem następujące za pomocą walidatora W3C i potwierdza, że ​​jest to poprawne.

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

6

Odniesienie do bardziej aktualnej specyfikacji:

HTML 5.2 - zalecenie W3C (14 grudnia 2017 r.)

Element powiązany z formularzem może mieć związek z <form>elementem, który jest nazywany właścicielem formularza elementu. Jeśli element powiązany z formularzem nie jest powiązany z <form>elementem, jego właściciel formularza ma wartość null.


4

Według MDN możliwe jest:

Zauważ, że zawsze można używać widgetu formularza poza elementem, ale jeśli to zrobisz, ten widget formularza nie ma nic wspólnego z żadną formą. Takie widżety mogą być używane poza formularzem, ale powinieneś mieć specjalny plan dla takich widżetów, ponieważ same nie zrobią nic. Będziesz musiał dostosować ich zachowanie za pomocą JavaScript.

HTML5 wprowadza atrybut formularza do elementów formularza HTML. Powinno to umożliwiać jawne powiązanie elementu z formularzem, nawet jeśli nie jest on zawarty w znaczniku formularza. Niestety, na razie wdrożenie tej funkcji w przeglądarkach nie jest jeszcze wystarczająco dobre, aby na niej polegać.


2

Wiem, że to pytanie jest dość stare, jednak udało mi się zbudować wiele złożonych stron wprowadzania danych bez znaczników formularza. Chociaż przez wielu nie jest uważany za „standardowy”, NIE jest niewłaściwe używanie danych wejściowych bez znaku <form>. Moje projekty były sytuacjami, w których potrzebowałem pełnej kontroli nad zachowaniem strony i przeszkadzało jej domyślne zachowanie formularza. Był w stanie przeprowadzić walidację na poziomie strony i pola (przy użyciu JS) i „przesłać” dane za pomocą wywołań Ajax itp. W rzeczywistości jest to obecnie mój preferowany sposób.

Wymagana jest duża ilość JS, ale nie jest to trudne i można go łatwo zrobić jako kod wielokrotnego użytku.

Istnieją również inne przypadki, w których zdecydowanie NIE używam formularzy z danymi wejściowymi, takimi jak strony logowania.

Mam nadzieję, że to świadectwo pomoże komuś.


1

Tak, możesz mieć prawidłowe dane wejściowe bez formularza.


14
Cóż, mógłbyś dodać dowody potwierdzające „tak”. Lub wyjaśnienie, dla których wersji HTML jest to prawdą. Nadal bym cię nie zmęczyła.
Adriano Varoli Piazza

9
Więc z twojego uzasadnienia, dlaczego w ogóle masz SO, jeśli użytkownik może po prostu przejść do W3 i sam to sprawdzić? Ja też nie głosowałbym za tobą, ale musiałbym się zgodzić, że ten, kto ma więcej wyjaśnień w sposób jasny i zwięzły, otrzymuje opinię pozytywną, ponieważ wyjaśnienie, jak również poprawna odpowiedź, jest najbardziej pomocne w SO.
Mattygabe,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.