A ação é realmente necessária nos formulários?
-
29-10-2019 - |
Pergunta
Aqui diz que é obrigatório
http://www.w3schools.com/tags/att_form_action.asp
mas vejo que os formulários são enviados mesmo se eu não especificar um atributo de ação, e o formulário é enviado para a página atual, que é exatamente o que eu quero.
Solução
O requisito é apenas para padrões .É perfeitamente possível fazer o que quiser em uma página e não seguir os padrões.As coisas podem não ser exibidas ou não funcionar corretamente se você fizer isso, mas provavelmente serão.O objetivo é segui-los e a ideia é que, se você segui-los, sua página sempre funcionará;você não precisa se preocupar com nada.
Sim, o formulário é obrigatório para ter um atributo de ação em HTML4.Se não estiver definido, o navegador provavelmente usará o mesmo método ao fornecer uma string vazia para ele.Você realmente deve definir action=""
, que é HTML4 perfeitamente válido, segue os padrões e atinge o mesmo resultado exato.
Em HTML5, você pode especificar uma ação no próprio botão de envio.Se não houver uma, ele usa a ação do formulário e, se não estiver definida, o padrão é a string vazia (observe que você não pode definir explicitamente a ação como uma string vazia em HTML5).
Outras dicas
Você pode obter o comportamento que deseja enquanto segue as especificações, deixando a ação em branco (uma vez que é relativo, em branco significa a página atual):
<form action="" ...>
Conforme mencionado por bazmegakapa, a especificação HTML5 não parece exigir o atributo action
:
Os atributos de conteúdo de ação e formação, se especificado , devem ter um valor que seja um URL não vazio válido potencialmente cercado por espaços. [ênfase adicionada]
Curiosamente, isso significa que em HTML5, <form action="">
não é válido, mas não está claro se um formulário sem uma ação é necessário para funcionar (enviar para a página atual).
Tecnicamente, é uma violação das especificações do HTML 4, mas todos os navegadores enviarão mensagens para o originador da resposta se nenhuma ação for especificada.Eu concordaria que não é uma ideia inteligente confiar nele, mas funciona.
EDITAR: Como foi apontado para mim que esta pergunta está marcada como HTML 5: Em HTML 5, eles listam o atributo de ação como não sendo mais necessário: http://www.w3schools.com/html5 / att_form_action.asp que está de acordo com as especificações do HTML 5.
// thread de alerta de ressurreição
Para estender a resposta do animuson ...
Se depois de todos os atributos do botão formaction
e formulário action
terem sido avaliados, se "ação" ainda avalia como "string vazia", então da seção de especificação HTML5.2 4.10.21.3 ponto 8 estados:
Se ação for uma string vazia, deixe que ação seja o URL do documento do documento de formulário.
quando se trata de envio do formulário, que é o que você queria.