Вы должны использовать кнопку (и ввод или кнопку типа отправки), чтобы отправить форму.
Если вам нужны какие-либо дополнительные функции, которые есть у ссылки, но у элементов ввода нет (например, при наведении курсора), тогда проще реализовать элементы с помощью javascript, чем отправку формы. Это также ухудшит изящность для людей без javascript.
Вы даже можете решить эту проблему с помощью специального кода MSIE (и использовать: hover для других браузеров):
<input type="submit" value="send" class="linkstyles"
onmouseenter="this.className+=' hovered';"
onmouseleave="this.className=this.className.replace(/(^|\s)hovered(\s|$)/g, '');" />
Если вы все еще действительно хотите сделать это задом наперед, вот как я бы этого не сделал:
function submitByLink ( elm ) {
// Move up domtree until we hit no parentNode or find a form
while (elm) {
elm = elm.parentNode;
if (elm && elm.tagName == 'FORM') {
// First chance we get, we submit the form and exit.
// The return on the node it kills the event bubble by forwarding false to browser
elm.submit();
return false;
}
}
// If we got here then there is no form parent and user will be sent to link href
}
И HTML будет выглядеть так:
<a href="aPageExplainingWhyYouNeedJavascript.html" onclick="return submitByLink(this);">Send</a>