Toon posts:

[JS] Event voor een entertoets

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer me de volgende code een menu te maken wat door middel van de pijltjestoetsen en de entertoets te hanteren is. het omhoog en naar beneden bewegen door de menu's werkt

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<SCRIPT language=JavaScript>
var nrfocus = 1;

function document.onkeydown()
{
  if (window.event.keyCode==40)
  {
    nrfocus++;
    document.getElementById("link"+nrfocus).focus();
  }
  if (window.event.keyCode==38)
  {
    nrfocus--;
    document.getElementById("link"+nrfocus).focus();
  }
}
</script>
</HEAD>
<table>
  <tr><td id='link1' class='out' onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link2' class='out' onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link3' class='out' onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link4' class='out' onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link5' class='out' onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link6' class='out' onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link7' class='out' onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' ></a></td></tr>    
</table>
</BODY>


Nu wil ik wanneer je op enter drukt dat er dan een pagina geopend wordt. Welk event van javascript kan ik hiervoor gebruiken? Ik kon niets vinden waarmee ik daar voor kan zorgen.

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

De keycode is 13

Download my music on SoundCloud


Verwijderd

Topicstarter
Oke, ik heb dit nu werkend in Internet Explorer
Maar hoe krijg ik het werkend in mozilla? Volgens mij pakt hij de window.event niet

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<SCRIPT language=JavaScript>
var nrfocus = 1;

function document.onkeydown()
{
  if (window.event.keyCode==40)
  {
  alert('test');
    nrfocus++;
    document.getElementById("link"+nrfocus).focus();
  }
  if (window.event.keyCode==38)
  {
    nrfocus--;
    document.getElementById("link"+nrfocus).focus();
  }
}

function redirect(url)
{
    if (window.event.keyCode==13)
    {
        document.location.href=url;
    }
}

</script>
</HEAD>
<body onload='nrfocus==1;'>
<table>
  <tr><td id='link1' class='out' onkeydown="redirect('http://www.test.nl');" onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link2' class='out' onkeydown="redirect('http://www.fok.nl');" onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link3' class='out' onkeydown="redirect('http://www.hotmail.com');" onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link4' class='out' onkeydown="redirect('http://www.nu.nl');" onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link5' class='out' onkeydown="redirect('http://www.nu.nl');" onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link6' class='out' onkeydown="redirect('http://www.hoi.nl');" onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</td></tr>
  <tr><td id='link7' class='out' onkeydown="redirect('http://www.nu.nl');" onfocus="this.className='over';" onblur="this.className='out';" bgcolor='#CECECE' >test</a></td></tr>    
</table>
</BODY>
</HTML>


iemand een idee?

[ Voor 98% gewijzigd door Verwijderd op 26-08-2005 14:14 ]


Verwijderd

daar krijg je het event object als parameter mee:
code:
1
2
3
onkeydown(e) {
  alert(e.which);
}

Verwijderd

Topicstarter
hmm dat snap ik niet helemaal, waar moet ik dit invullen dan?

als parameter in de function document.onkeydown? en dan?

Verwijderd

en dan? dan ga je proberen en lees je 'm uit, de keycode kan je in het which property vinden.

Wat lukte er niet?

Verwijderd

Topicstarter
nou ik denk dat dat nu wel goed gaat. ik krijg nu alleen deze error:

Error: document.getElementById("link" + nrfocus).focus is not a function
Source File: file***************/down.html
Line: 47

Verwijderd

Topicstarter
zo te merken pakt hij de focus functie niet. Weet iemand hoe ik dit kan oplossen in mozilla?

Verwijderd

Je zou dit beter kunnen oplossen door ipv onfocus gebruik te maken van onmouseover (hover). En in je javascriptfunctie verander je dan de .focus functie door de functie die het in de juiste classname verandert.

Verwijderd

Topicstarter
Dat kan niet want het item moest gefocussed worden omdat ik wil dat wanneer je op enter drukt dat er verwezen wordt naar een website.

Ik wil met de pijltjestoetsen door m'n menu kunnen scrollen en met enter het menuitem activeren

Verwijderd

Dan hang je toch een eventhandler aan de entertoets die het actieve menuitem opzoekt en naar het adres hiervan surft?

Verwijderd

Topicstarter
ohja idd, dat ga ik ff proberen.

verder doet de onfocus het niet meer in firefox, en jij had het over een mouseover maar dat werkt ook niet als je met de pijltjestoetsen van je keyboard door de menuitems beweegt.

Verwijderd

Je leest niet goed. Wat jij in de onmouseover zet (een andere classname) kun je best vanuit je functie ook doen. Op die manier kun je dan ook door het menu bladeren met de toetsen, en met de muis.

Verwijderd

Topicstarter
ja je hebt gelijk, het is gelukt zoals je het zei.

tnx
Pagina: 1