Zdecydowanie nie ma rozwiązania z czystym HTML, aby przesłać formularz ze a
znacznikiem link ( ). Standardowy kod HTML akceptuje tylko przyciski lub obrazy. Jak powiedzieli inni współpracownicy, można symulować wygląd linku za pomocą przycisku, ale myślę, że nie o to chodzi w tym pytaniu.
IMHO uważam, że zaproponowane i przyjęte rozwiązanie nie działa.
Przetestowałem to na formularzu, ale przeglądarka nie znalazła odniesienia do formularza.
Można więc go rozwiązać za pomocą jednej linii JavaScript, używając this
obiektu, który odwołuje się do klikanego elementu, który jest węzłem potomnym formularza, który należy przesłać. Podobnie this.parentNode
jest z węzłem formularza. Po prostu wywołuje submit()
metodę w tej formie. Nie jest konieczne badanie całego dokumentu, aby znaleźć odpowiednią formę.
<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>
Przypuśćmy, że wpisuję własnym nazwiskiem:
Użyłem get
atrybutu metody formularza, ponieważ po przesłaniu można zobaczyć odpowiednie parametry w adresie URL na załadowanej stronie.
http://www.greatsolutions.com.br/indexint.htm?fname=Paulo&lname=Buchsbaum
To rozwiązanie oczywiście dotyczy każdego tagu, który akceptuje onclick
zdarzenie lub podobne zdarzenie.
this
to doskonały wybór do odzyskania kontekstu wraz ze event
zmienną (dostępną we wszystkich głównych przeglądarkach i od IE9), której można użyć bezpośrednio lub przekazać jako argument do funkcji.
W takim przypadku zamień linię ze a
znacznikiem na linię poniżej, używając właściwości target
, która wskazuje element, który rozpoczął zdarzenie.
<a href="#" onclick="event.target.parentNode.submit();"> Submit here</a>