On Sun, 16 Jan 2005 14:11:15 +0100, Jesper Stocholm <j@stocholm.invalid>
wrote:
> Jeg har en side, der er bygget til noget ASP.Net . Her har jeg en form,
> der
> har flere knapper i sig. Men det er vigtigt, at der klikkes på de rigtige
> knapper, da fx tryk på ENTER blot vil submitte formen ved "klik" på den
> første knap i formen.
En mulighed var:
<form onsubmit="return false" action="" method="post">
<fieldset><legend>Testform</legend>
<input name="_ctl2:txtSearch" type="text" id="_ctl2_txtSearch"
onkeydown="return TrapDefaultButton(event);" />
<input type="submit" value="submit"
onmouseup="document.forms[0].submit();" />
</fieldset>
</form>
og så dette:
function TrapDefaultButton(e) {
if (!e) e = window.event;
if (e.keyCode && e.keyCode == 13) {
if (confirm("Post form?")) {
document.forms[0].submit();
}
}
}
Det virker i IE, Mozilla og Opera (onclick ved submit knappen giver
problemer i Opera, så derfor har jeg brugt onmouseup).
Jeg er ikke så glad for at sætte return false på onsubmit, men jeg kan dog
ikke finde bedre måder at bremse afsendelsen på.
Problemet er at hvis browseren ikke forstår den måde man forsøger at
afsende formen på (document.forms[0].submit()), så bliver siden ubrugelig.
Dette kunne man forsøge at forbedre ved at teste og så indsætte onsubmit
med javascript:
function init() {
if (document.forms[0] && window.event) {
document.forms[0].onsubmit = 'return false';
}
}
IE forstår ikke når onsubmit (eller andre event-handlere) sættes med
javascript, så der er du nødt til at lave noget særskilt til den.
--
Ryan Kristensen