/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Bestemme klik på en knap
Fra : Jesper Stocholm


Dato : 16-01-05 14:11

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.

Jeg har fundet noget javascript, der fixer dette - men det virker kun i IE
- hvilket ikke er godt nok.

Scriptet er:

function TrapDefaultButton(btn){

if (document.all){
if (event.keyCode == 13)
{
event.returnValue=false;
event.cancel = true;
btn.click();
}
}
}

HTML-delen er

<input name="_ctl2:txtSearch" type="text" id="_ctl2_txtSearch"
onkeydown="TrapDefaultButton(document.all._ctl2_btnSearch)" />

Her skal der "klikkes" på knappen btnSearch ved tryk på ENTER, når fokus er
i inputfeltet _ctl2_txtSearch.

Jeg kan lave HTML-delen om til

onkeydown="TrapDefaultButton(document.getElementByID('_ctl2_btnSearch'))

Men hvordan laver jeg selve javascriptet om, så det ikke kun virker i IE?


--
Jesper Stocholm http://stocholm.dk

 
 
Ryan Kristensen (23-01-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 23-01-05 19:19

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

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste