<input> est-il bien formé sans <form>?

225

Est-il valable d'avoir <input>sans qu'il soit dans un <form>?

Avoir un processus pour marquer certains champs dans les pages et vient de trouver une page avec des champs de saisie qui n'étaient pas marqués comme je m'y attendais.
Cela m'a pris un certain temps, mais j'ai compris que le processus d'obtention des éléments de formulaire, puis d'obtention des champs, est ce qui les a fait manquer car il n'y a pas de formulaire.

Greg Domjan
la source
@Adriano - ma pensée exactement. il suffit de le parcourir et de voir!
Gabriel Hurley
1
Bien sûr , validateur w3c , j'aurais vraiment dû ajouter qu'une explication derrière pourquoi serait bien.
Greg Domjan
Je veux dire également qu'il pourrait être valide pour certaines versions de html, mais pas pour d'autres, et dans ce cas, le validateur est beaucoup plus rapide que de parcourir les normes.
Adriano Varoli Piazza
3
Voir aussi: Y a
unor

Réponses:

200

<input>sans un <form> semble valide , oui (au moins pour html 4.01, regardez vers la fin du 17.2.1):

Les éléments utilisés pour créer des contrôles apparaissent généralement à l'intérieur d'un élément FORM, mais peuvent également apparaître à l'extérieur d'une déclaration d'élément FORM lorsqu'ils sont utilisés pour créer des interfaces utilisateur. Ceci est discuté dans la section sur les événements intrinsèques. Notez que les contrôles en dehors d'un formulaire ne peuvent pas être des contrôles réussis.

ChristopheD
la source
7
Pour pouvoir soumettre des données de formulaire à un serveur (Ajax mis à part).
Ludovic Kuty
5
@PhilipSmith Je sais que votre commentaire a été écrit il y a longtemps. Mais pourquoi pensez-vous que c'est étrange ou inutile? Pourquoi voudrais-je créer un formulaire si le contrôle ne communique pas avec un serveur?
adam-beck du
18
Qu'est-ce qu'un "contrôle réussi"?
AlikElzin-kilaka
22
Lorsqu'un formulaire est soumis pour traitement, certains contrôles ont leur nom associé à leur valeur actuelle et ces paires sont soumises avec le formulaire. Les contrôles pour lesquels des paires nom / valeur sont soumises sont appelés contrôles réussis. w3c
SantiBailors
3
@ adam-beck Par exemple, un certain site Web AngularJS gère les entrées, manipule les données et les envoie à une API. Les modèles HTML pour les formulaires peuvent être écrits sans balises de formulaire et ils communiquent très bien avec le serveur.
sr9yar
75

J'ai vérifié ce qui suit avec le validateur W3C et il confirme que c'est valide.

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  <input type='text' />
</body>
</html>
Wai Yip Tung
la source
6

Référence à une spécification plus à jour:

HTML 5.2 - Recommandation du W3C (14 décembre 2017)

Un élément associé à un formulaire peut avoir une relation avec un <form>élément, qui est appelé propriétaire du formulaire de l'élément. Si un élément associé au formulaire n'est pas associé à un <form>élément, son propriétaire de formulaire est dit nul.

David
la source
4

Selon MDN, il est possible:

Notez qu'il est toujours possible d'utiliser un widget de formulaire en dehors d'un élément mais si vous le faites, ce widget de formulaire n'a rien à voir avec aucun formulaire. Ces widgets peuvent être utilisés en dehors d'un formulaire, mais vous devez alors avoir un plan spécial pour ces widgets, car ils ne feront rien par eux-mêmes. Vous devrez personnaliser leur comportement avec JavaScript.

HTML5 introduit l'attribut de formulaire sur les éléments de formulaire HTML. Il devrait vous permettre de lier explicitement un élément à un formulaire même s'il n'est pas inclus dans une balise de formulaire. Malheureusement, pour le moment, la mise en œuvre de cette fonctionnalité sur tous les navigateurs n'est pas encore assez bonne pour y faire confiance.

Adnan Faradhi
la source
2

Je sais que cette question est assez ancienne, cependant, j'ai réussi à créer de nombreuses pages de saisie de données complexes sans balises de formulaire. Bien qu'il ne soit pas considéré comme «standard» par beaucoup, il n'est PAS inapproprié d'utiliser des entrées sans a <form>. Mes projets étaient des cas où j'avais besoin d'un contrôle complet sur le comportement de la page et le comportement du formulaire par défaut gênait. A pu effectuer une validation au niveau de la page et du champ (en utilisant JS) et "soumis" les données avec des appels Ajax etc ... en fait, c'est ma façon préférée de nos jours.

Beaucoup de JS est requis, mais ce n'est pas si difficile et se fait facilement en tant que code réutilisable.

Il existe également d'autres cas où je n'utilise PAS de formulaires avec des entrées telles que les pages de connexion.

J'espère que ce témoignage aide quelqu'un.

G-Man
la source
1

Oui, vous pouvez avoir une entrée valide sans formulaire.

heisenberg
la source
14
Eh bien, vous auriez pu ajouter quelques preuves derrière le «oui». Ou une clarification des versions de HTML pour lesquelles cela est vrai. Pourtant, je ne vous aurais pas minimisé.
Adriano Varoli Piazza
9
Donc, avec votre raison d'être, pourquoi avoir du SO si l'utilisateur peut simplement aller sur W3 et le rechercher lui-même? Je ne vous aurais pas déçu non plus, mais je dois convenir que celui qui a le plus d'explications de manière claire et concise obtient le vote positif, car une explication ainsi que la bonne réponse est ce qui est le plus utile ici à SO.
Mattygabe
-10

Bien sûr, utilisez

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

pour vérifier la validité du champ dynamiquement.

taran
la source
31
Cela n'a rien à voir avec la validité du balisage, mais plutôt pour l' API de validation des contraintes . Comment cette réponse a obtenu 8 votes positifs me dépasse.
user247702