web-dev-qa-db-fra.com

Une action est-elle vraiment requise sur les formulaires?

Ici, il est dit que c'est obligatoire

http://www.w3schools.com/tags/att_form_action.asp

mais je vois que les formulaires sont soumis même si je ne spécifie pas d'attribut d'action, et le formulaire est soumis à la page actuelle, ce qui est exactement ce que je veux.

33
Alex

L'exigence est seulement par standards. Il est parfaitement possible de faire ce que vous voulez sur une page et de ne pas suivre les normes. Les choses risquent de ne pas s'afficher ou de ne pas fonctionner correctement si vous agissez ainsi, mais probablement. Le but est de les suivre, et l’idée est que si vous les suivez, votre page fonctionnera toujours; vous n'avez rien à craindre.

Oui, le formulaire est obligatoire d'avoir un attribut d'action en HTML4. S'il n'est pas défini, le navigateur utilisera probablement la même méthode que pour lui fournir une chaîne vide. Vous devez vraiment définir action="" qui est parfaitement valide, HTML4, respecte les normes et permet d'obtenir le même résultat.

En HTML5, vous pouvez réellement spécifier une action sur le bouton de soumission lui-même. S'il n'y en a pas, il utilise l'action du formulaire et s'il n'est pas défini, la chaîne vide est utilisée par défaut (remarque: vous ne pouvez pas définir explicitement l'action sur une chaîne vide en HTML5).

46
animuson

Il ressemble à la spécification HTML4 le requiert . Je soupçonne que certains navigateurs font ce que vous voulez "rendre les choses plus faciles". Je ne recommande cependant pas de s'y fier. Étant donné que vous avez un comportement indéfini, un navigateur peut raisonnablement décider de ne rien faire lorsque le formulaire est soumis sans action.

Vous pouvez obtenir le comportement que vous souhaitez tout en suivant la spécification en laissant l'action vide (car elle est relative, vide signifie la page en cours):

<form action="" ...>

Comme mentionné par bazmegakapa, la spécification HTML5 ne semble pas nécessiter l'attribut action :

Les attributs de contenu action et formaction, si spécifié, doivent avoir une valeur qui est une URL valide non vide potentiellement entourée d'espaces.

Fait intéressant, cela signifie en HTML5 que <form action=""> n’est pas valide, mais il n’est pas clair si un formulaire sans action doit fonctionner (soumettre à la page actuelle).

12
Brendan Long

Techniquement, c'est une violation de la spécification HTML 4, mais tous les navigateurs l'enverront à l'expéditeur de la réponse si aucune action n'est spécifiée. Je conviens que ce n’est pas une bonne idée de s’en remettre à cela, mais cela fonctionne.

EDIT: Comme il a été signalé à moi que cette question est étiquetée HTML 5: En HTML 5, l’attribut action n’est plus requis: http://www.w3schools.com /html5/att_form_action.asp qui est conforme aux spécifications HTML 5.

5
swannee

// thread alerte de résurrection

Pour prolonger la réponse d'animuson ...

Si après tous les attributs du bouton formaction et du formulaire action ont été évalués, si "action" toujours évalue comme "chaîne vide", dans la section de spécifications HTML5.2 4.10.21.3 point 8, on lit:

Si action est la chaîne vide, faites de l’action l’adresse URL du document document de formulaire.

quand il s'agit de la soumission du formulaire, c'est ce que vous vouliez.

0
Neil Moss