2012-02-22 27 views
30

Aquí se dice que es necesario¿Se requiere realmente acción en los formularios?

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

pero veo que las formas de obtener presentará incluso si no se especifica un atributo de acción, y la forma consigue enviadas a la página actual, que es exactamente lo que quiero.

+33

Nota: No confíe en w3schools en absoluto. No son una fuente confiable. – kapa

+5

Sin embargo, en este caso, w3schools es correcto en las especificaciones HTML 4 y HTML 5. En HTML 4, lo enumeran según sea necesario (aunque la mayoría de los navegadores aún funcionan sin él) y en html 5 la lista ya no es necesaria: http://www.w3schools.com/html5/att_form_action.asp – swannee

+0

Si es relevante, puede hacer que su envío de formulario se realice en un iframe: http://stackoverflow.com/a/26380651/1695680 De esta manera, no se rompe el comportamiento de entrada de su formulario y tampoco se recarga la página. – ThorSummoner

Respuesta

42

El requisito es solo por estándares. Es perfectamente posible hacer lo que quiera en una página y no seguir los estándares. Las cosas pueden no mostrarse o funcionar 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 requiere para tener un atributo de acción en HTML4. Si no está configurado, es probable que el navegador use el mismo método que proporcionarle 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 botón de enviar. Si no hay uno, usa la acción del formulario y, si no está establecido, se establece de manera predeterminada en la cadena vacía (tenga en cuenta que no puede establecer explícitamente la acción en una cadena vacía en HTML5).

+2

Otra nota, si eliges dejar de lado el atributo de acción, estoy bastante seguro de que se enviará por defecto a la misma página. – clamchoda

+0

@Chris: Dije que probablemente sí. No puedo responder por todos los navegadores anteriores porque honestamente no sé lo que hicieron los navegadores más antiguos. Si no está configurado, depende realmente del navegador, pero creo que todos adoptarán esa acción por defecto. – animuson

+0

No sé cómo fue en 2013 cuando se escribió la respuesta, pero actualmente en HTML5 action = "" es válida ... también sin acción, el atributo está bien – instead

5

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

EDIT: Como se ha señalado a mí que esta pregunta se marca como HTML 5: En HTML 5 se lista el atributo de acción que ya no se requiere: http://www.w3schools.com/html5/att_form_action.asp que está de acuerdo con los HTML 5 especificaciones.

+0

¿Violación de cuál especificación? – kapa

+3

No hay nada llamado w3schools HTML spec. w3schools no tiene nada que ver con w3c, y la especificación HTML es lanzada y mantenida por w3c. w3schools no es oficial, es solo un sitio con mucha información técnica y buen SEO. La especificación HTML5 (acerca de la cual la pregunta se hace) seguramente no se violará al hacer lo que pide el OP. ¿Siempre atacas a las personas que intentan corregirte? No creo que tu comportamiento sea profesional. – kapa

+1

No quiero arriesgarme a que tu cabeza explote, pero la pregunta no tiene nada que ver con HTML4. Eso es todo lo que quería decir. Simplemente no quiero que los futuros visitantes encuentren información errónea. No tengo ningún problema contigo más que el hecho de que estás actuando infantil. [Especificación de HTML5 4.10.3 El elemento de formulario] (http://www.w3.org/TR/2011/WD-html5-20110525/forms.html#the-form-element) – kapa

12

Parece the HTML4 spec requires it. Sospecho que algunos navegadores hacen lo que quieren para "facilitar las cosas". Sin embargo, no recomiendo confiar en él. Dado que tiene un comportamiento no definido, un navegador podría decidir razonablemente no hacer nada cuando el formulario se envíe sin action.

Usted puede obtener el comportamiento que desea mientras que después de la especificación dejando la acción en blanco (ya que es relativa, espacio en blanco significa la página actual):

<form action="" ...> 

Como se ha mencionado por bazmegakapa, la especificación HTML5 doesn't seem to require the action attribute:

la acción y de contenido formAction atributos, si se especifica , debe tener un valor que es una URL no válida vacío potencialmente rodeado de espacios. [énfasis añadido]

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

+1

La pregunta tiene una etiqueta HTML5, y esta respuesta se refiere a HTML4. – kapa

+2

@ bažmegakapa En lugar de votar por todas las respuestas, sería más útil publicar su propia respuesta con un enlace a la especificación de HTML5. Estoy de acuerdo con swannee en que todo el "rechazo de cada respuesta" en lugar de simplemente dejar un comentario (o editar sugerencia) es de mala calidad. Nuestras respuestas son correctas, pero no tan específicas como desee (y ambos estamos perfectamente dispuestos a mejorar nuestras respuestas con más información). –

+1

Downvoted porque las respuestas fueron incorrectas y difundir información errónea. Eliminé mi voto negativo, agregué Voto, gracias. – kapa

Cuestiones relacionadas