¿Es realmente necesario actuar en los formularios?


Aquí dice que es obligatorio

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

Pero veo que los formularios se envían incluso si no especifico un atributo action, y el formulario se envía a la página actual, que es exactamente lo que quiero.

Author: kapa, 2012-02-22

4 answers

El requisito es solo por estándares. Es perfectamente posible hacer lo que quieras en una página y no seguir los estándares. Es posible que las cosas no se muestren o funcionen correctamente si lo haces, pero es probable que lo hagan. El objetivo es seguirlos, y la idea es que si los sigues, tu página siempre funcionará; no tienes que preocuparte por nada.

Sí, el formulario es requerido para tener un atributo action en HTML4. Si no está configurado, el navegador probablemente utilizará el mismo método que le proporciona una cadena vacía. Realmente debe establecer action="" que es HTML4 perfectamente válido, sigue los estándares y logra el mismo resultado exacto.

En HTML5, puede especificar una acción en el propio botón enviar. Si no hay una, utiliza la acción del formulario y si no está establecida, por defecto es la cadena vacía (tenga en cuenta que no puede establecer explícitamente la acción en una cadena vacía en HTML5).

 44
Author: animuson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-13 18:34:00

Parece que la especificación HTML4 lo requiere. Sospecho que algunos navegadores hacen lo que quieres para "hacer las cosas más fáciles". Sin embargo, no recomiendo confiar en él. Dado que está en un comportamiento indefinido, un navegador podría razonablemente decidir no hacer nada cuando el formulario se envía sin action.

Puede obtener el comportamiento que desea mientras sigue la especificación dejando la acción en blanco (ya que es relativa, en blanco significa la página actual):

<form action="" ...>

Como mencionó bazmegakapa, el HTML5 spec no parece requerir el atributo action :

Los atributos de contenido action y formaction, si se especifica, deben tener un valor que sea una URL válida no vacía potencialmente rodeada de espacios.[énfasis añadido]

Curiosamente, esto significa que en HTML5, <form action=""> no es válido, pero no está claro si se requiere un formulario sin una acción para funcionar (enviar a la página actual).

 12
Author: Brendan Long,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-05 07:50:52

Técnicamente es una violación de la especificación HTML 4, pero todos los navegadores publicarán de nuevo al creador de la respuesta si no se especifica ninguna acción. Estoy de acuerdo en que no es una buena idea confiar en él, pero funciona.

EDITAR: Como se me ha señalado que esta pregunta está etiquetada como HTML 5: En HTML 5 listan el atributo action como ya no requerido: http://www.w3schools.com/html5/att_form_action.asp que está de acuerdo con las especificaciones HTML 5.

 5
Author: swannee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-13 15:48:35

/ / thread resurrection alert

Para extender la respuesta de animuson...

Si después de todos los atributos button formaction y form action se han evaluado, si" action "still evalúa como" empty string", entonces desde la sección spec de HTML5.24.10.21.3 el punto 8 dice:

Si action es la cadena vacía, deje que action sea la URL del documento formulario de documento.

Cuando se trata de la presentación del formulario, que es lo que quería.

 0
Author: Neil Moss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-29 15:29:57