Definitivamente, não há solução com HTML puro para enviar um formulário com um link (a
tag ). O HTML padrão aceita apenas botões ou imagens. Como alguns outros colaboradores disseram, é possível simular a aparência de um link usando um botão, mas acho que esse não é o objetivo da pergunta.
IMHO, acredito que a solução proposta e aceita não funciona.
Eu testei em um formulário e o navegador não encontrou a referência ao formulário.
Portanto, é possível resolvê-lo usando uma única linha de JavaScript, usando o this
objeto, que faz referência ao elemento que está sendo clicado, que é um nó filho do formulário, que precisa ser enviado. O mesmo this.parentNode
acontece com o nó do formulário. Depois é só chamar o submit()
método dessa forma. Não é necessária pesquisa de todo o documento para encontrar a forma correta.
<form action="http://www.greatsolutions.com.br/indexint.htm"
method="get">
<h3> Enter your name</h3>
First Name <input type="text" name="fname" size="30"><br>
Last Name <input type="text" name="lname" size="30"><br>
<a href="#" onclick="this.parentNode.submit();"> Submit here</a>
</form>
Suponha que eu entre com meu próprio nome:
Eu usei get
no atributo method method porque é possível ver os parâmetros corretos no URL na página carregada após o envio.
http://www.greatsolutions.com.br/indexint.htm?fname=Paulo&lname=Buchsbaum
Essa solução obviamente se aplica a qualquer tag que aceite o onclick
evento ou algum evento semelhante.
this
é uma excelente opção para recuperar o contexto juntamente com a event
variável (disponível em todos os principais navegadores e no IE9) que pode ser usada diretamente ou transmitida como argumento para uma função.
Nesse caso, substitua a linha pela a
tag pela linha abaixo, usando a propriedade target
que indica o elemento que iniciou o evento.
<a href="#" onclick="event.target.parentNode.submit();"> Submit here</a>