Autor Zpráva
lucas
Profil *
Zdravím všechny, potřeboval bych poradit s jedním zvláštním problémem.
Chci, aby uživatel mohl procházet seznamem souborů i pomocí klávesnice:

$(document).keydown(function(e) {
  if (!$(".ss_radek").length) return;
  i = $(".ss_radek").index($(".ss_oznaceny"));
  spodni = $(".ss_radek").length - 1;
  if (e.keyCode == 38 && i > 0) oznacit = i - 1;
  if (e.keyCode == 40 && i < spodni) oznacit = i + 1;
  if (e.keyCode == 36) oznacit = 0;
  if (e.keyCode == 35) oznacit = spodni;        
  if (oznacit != null) {
    $(".ss_radek").removeClass("ss_oznaceny");
    $($(".ss_radek")[oznacit]).addClass("ss_oznaceny");
  }
//-------------------------------------------------------------------------------------
  if (e.keyCode == 13) $(".ss_oznaceny").trigger("dblclick");
  if (e.keyCode == 37) location.href = $(".ss_predchozi").attr("href");
  if (e.keyCode == 39) location.href = $(".ss_dalsi").attr("href");        
//-------------------------------------------------------------------------------------
});


Všechno funguje jak má, ale enter a šipky vpravo/vlevo začnou fungovat
až po tom, co se stiskne jakákoliv jiná klávesa. Takže po reloadu
tyhle tři klávesy nejdou, stačí se ale třeba posunout na další soubor
šipkou dolů a už to funguje. Zkoušel jsem to v Chrome, FF a IE a všude
to samý.

Setkal jste se s tím už někdo?
lucas
Profil *
Tak vyřešeno. Tenhle kód

if (oznacit != null) {
  $(".ss_radek").removeClass("ss_oznaceny");
  $($(".ss_radek")[oznacit]).addClass("ss_oznaceny");
}


po vykonání vyskočil z funkce a na poslední tři
podmínky už nedošlo. V JS není v neinicializovaný
proměnný null, jak jsem si myslel, takže
se provedl vždycky. To že přerušoval funkci, bylo
nejspíš právě použitím neinicializovaný proměnný
jako indexu. Na začátek stačilo přidat
oznacit = null a už to jede.

:-) :-) :-)
dominikdavid
Profil
Zdravím!
Mám podobný problém. Chtěl bych "přecházet mezi stránkami" pomocí šipek, ale nějak mi to nefunguje. Díky za pomoc

<script type="text/javascript">
function funkce() {

document.keydown(function(e) {
  if (e.keyCode == 37) location.href = "http://xxx.cz";
  if (e.keyCode == 39) location.href = "http://blabla.cz";
});

}

</script>


<body onload="funkce()">

</body>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: