Ist <input> ohne <form> gut geformt?

225

Ist es gültig zu haben, <input>ohne dass es in einem ist <form>?

Haben Sie einen Prozess zum Markieren einiger Felder in Seiten und haben Sie gerade eine Seite mit Eingabefeldern gefunden, die nicht wie erwartet markiert wurden.
Es hat eine Weile gedauert, aber ich habe herausgefunden, dass der Prozess des Abrufens der Formularelemente und des Abrufs der Felder dazu geführt hat, dass diese übersehen wurden, weil es kein Formular gibt.

Greg Domjan
quelle
@Adriano - mein Gedanke genau. einfach durchlaufen und sehen!
Gabriel Hurley
1
Klar w3c validator , ich hätte wirklich hinzufügen sollen, dass eine Erklärung dahinter warum schön wäre.
Greg Domjan
Ich meine auch, dass es für einige HTML-Versionen gültig sein könnte, aber nicht für andere, und in diesem Fall ist der Validator viel schneller als das Lesen der Standards.
Adriano Varoli Piazza

Antworten:

200

<input>ohne a <form> scheint gültig zu sein , ja (zumindest für HTML 4.01, siehe Ende 17.2.1):

Die zum Erstellen von Steuerelementen verwendeten Elemente werden im Allgemeinen innerhalb eines FORM-Elements angezeigt, können jedoch auch außerhalb einer FORM-Elementdeklaration angezeigt werden, wenn sie zum Erstellen von Benutzeroberflächen verwendet werden. Dies wird im Abschnitt über intrinsische Ereignisse erläutert. Beachten Sie, dass Steuerelemente außerhalb eines Formulars keine erfolgreichen Steuerelemente sein können.

ChristopheD
quelle
7
Um Formulardaten an einen Server senden zu können (Ajax beiseite).
Ludovic Kuty
5
@PhilipSmith Ich weiß, dass Ihr Kommentar vor langer Zeit geschrieben wurde. Aber warum denkst du, ist das seltsam oder sinnlos? Warum sollte ich ein Formular erstellen wollen, wenn das Steuerelement nicht mit einem Server kommuniziert?
Adam-Beck
18
Was ist eine "erfolgreiche Kontrolle"?
AlikElzin-Kilaka
22
Wenn ein Formular zur Verarbeitung gesendet wird, wird bei einigen Steuerelementen der Name mit dem aktuellen Wert gepaart, und diese Paare werden mit dem Formular gesendet. Die Steuerelemente, für die Name / Wert-Paare übermittelt werden, werden als erfolgreiche Steuerelemente bezeichnet. w3c
SantiBailors
3
@ adam-beck Beispielsweise verarbeitet eine bestimmte AngularJS-Website Eingaben, bearbeitet Daten und sendet sie an eine API. HTML-Vorlagen für Formulare können ohne Formular-Tags geschrieben werden und sie kommunizieren problemlos mit dem Server.
sr9yar
75

Ich habe Folgendes mit dem W3C-Validator überprüft und er bestätigt, dass dies gültig ist.

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  <input type='text' />
</body>
</html>
Wai Yip Tung
quelle
5

Verweis auf eine aktuellere Spezifikation:

HTML 5.2 - W3C-Empfehlung (14. Dezember 2017)

Ein formularassoziiertes Element kann eine Beziehung zu einem <form>Element haben, das als Formulareigentümer des Elements bezeichnet wird. Wenn ein formularassoziiertes Element keinem <form>Element zugeordnet ist, wird sein Formulareigentümer als null bezeichnet.

David
quelle
4

Laut MDN ist es möglich:

Beachten Sie, dass es immer möglich ist, ein Formular-Widget außerhalb eines Elements zu verwenden. Wenn Sie dies jedoch tun, hat dieses Formular-Widget nichts mit einem Formular zu tun. Solche Widgets können außerhalb eines Formulars verwendet werden, aber dann sollten Sie einen speziellen Plan für solche Widgets haben, da sie selbst nichts tun. Sie müssen ihr Verhalten mit JavaScript anpassen.

HTML5 führt das Formularattribut für HTML-Formularelemente ein. Sie sollten ein Element explizit an ein Formular binden können, auch wenn es nicht in einem Formular-Tag enthalten ist. Leider ist die Implementierung dieser Funktion in allen Browsern derzeit noch nicht gut genug, um sich darauf zu verlassen.

Adnan Faradhi
quelle
1

Ja, Sie können eine gültige Eingabe ohne Formular haben.

Heisenberg
quelle
14
Nun, Sie hätten einige Beweise hinter dem "Ja" hinzufügen können. Oder eine Klarstellung, für welche HTML-Versionen dies gilt. Trotzdem hätte ich dich nicht heruntergestuft.
Adriano Varoli Piazza
9
Also mit Ihrer Begründung, warum überhaupt SO haben, wenn der Benutzer einfach zu W3 gehen und es selbst nachschlagen kann? Ich hätte Sie auch nicht abgelehnt, aber ich muss zustimmen, dass derjenige mit mehr Erklärungen auf klare und präzise Weise die positive Bewertung erhält, da eine Erklärung sowie die richtige Antwort hier bei SO am hilfreichsten sind.
Mattygabe
1

Ich weiß, dass diese Frage ziemlich alt ist, aber ich habe erfolgreich viele komplexe Dateneingabeseiten ohne Formular-Tags erstellt. Obwohl es von vielen nicht als "Standard" angesehen wird, ist es NICHT unangemessen, Eingaben ohne a zu verwenden <form>. Meine Projekte waren Fälle, in denen ich die vollständige Kontrolle über das Verhalten der Seite und das standardmäßige Formularverhalten benötigte. Konnte eine Validierung auf Seiten- und Feldebene (mit JS) durchführen und die Daten mit Ajax-Aufrufen usw. "übermitteln". Tatsächlich ist dies heutzutage meine bevorzugte Methode.

Es wird viel JS benötigt, aber es ist nicht so schwierig und kann leicht als wiederverwendbarer Code verwendet werden.

Es gibt auch andere Fälle, in denen ich definitiv KEINE Formulare mit Eingaben wie Anmeldeseiten verwende.

Hoffe, dieses Zeugnis hilft jemandem.

G-Man
quelle
-10

Sicher verwenden

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

um die Gültigkeit des Feldes dynamisch zu überprüfen.

Taran
quelle
31
Das hat nichts mit der Gültigkeit von Markups zu tun, sondern mit der API für die Überprüfung von Einschränkungen . Wie diese Antwort 8 positive Stimmen erhielt, ist mir ein Rätsel.
user247702