Autor Zpráva
rudla
Profil
Ahoj,
pořeboval bych takovou složitou maličkost. Lze nějak udělat, aby se spustila nějaká funkce ve stránce pomocí zadání určité kombinace kláves? Všiml jsem si, že je něco takového tady v diskusi. Děkuju.
Darker
Profil
Základem je event keydown (nebo keyup).
Pak klávesové zkratky nejsou problém. Zde příklad zkratek s kontrolem:
   function klik(event){
     var unicode=event.keyCode? event.keyCode : event.charCode
     if(unicode==115&&event.ctrlKey){
     akce();
      return false;     
     }
     if(unicode==116&&event.ctrlKey){
      akce2();
      return false;
     };
    };
    document.onkeypress=klik;
rudla
Profil
Darker:
Jdou tam nastavit třeba i jiná tlačítka? Například mezerník [space]? I když, mohl bych si to zkusti, ne? :) Každopádně díky.
rudla
Profil
Nějak mi to nejede, nemusí se něco napsát do body?
Chamurappi
Profil
Reaguji na Darkera:
Celkem často uvádíš polofunkční skripty. Neměl bys v tom pokračovat.

Základem je event keydown (nebo keyup).
To je pravda, ale proč ukazuješ příklad s problematičtějším onkeypress?

Zde příklad zkratek s kontrolem
Nefunkční v Internet Exploreru.


Reaguji na rudlu:
Viz Navigace šipkami na klávesnici.

Například mezerník [space]?
Ten má keyCode 32. Můžeš si do funkce prozatím hodit alert, který ti vypíše event.keyCode právě stisknuté klávesy, a pak podle zjištěných hodnot uzpůsobit podmínky.
rudla
Profil
Chamurappi:
V odkazovaném kódu je nastavení na
  if(target.tagName == "INPUT" || target.tagName == "TEXTAREA") return true;

Jde taky nastavit, aby to šlo i na body nebo to už jede? Každopádně, jdu to otestovat. Díky.
Darker
Profil
Chamurappi:
Celkem často uvádíš polofunkční skripty.
Dám si na to pozor.

rudla:
Tady jsem ti našel jednoduchý generátor kódů čísel. http://www.ryancooper.com/resources/keycode.asp

POST POSTUM:
rudla:
Pokud to chceš na body, není třeba uvádět podmínku. Tak chápu tvojí otázku.
Chamurappi
Profil
Reaguji na Darkera:
Pokud to chceš na body, není třeba uvádět podmínku.
Není pravda.


Reaguji na rudlu:
Jde taky nastavit, aby to šlo i na body nebo to už jede?
Uvedený řádek říká, že pokud uživatel píše do jednoho ze zmíněných typů elementů, nemá se funkce dále zpracovávat. Tamní dotaz se týkal šipek — asi není žádoucí, aby uživatel mačkající šipky v <input>u vyvolával nějakou další činnost.
rudla
Profil
Darker:
Za generátor děkuju.

Chamurappi:
Není pravda.
Pokud není, jak to má tedy být?

asi není žádoucí
Myslím, že v mém případě určitě ne.
rudla
Profil
Chamurappi:
pokud uživatel píše do jednoho ze zmíněných typů elementů
Co když mám nastaveno u body
id="oblast1"
a namísto zmíněného
name="INPUT"
to přepíšu?
Chamurappi
Profil
Reaguji na rudlu:
Pokud není, jak to má tedy být?
Tak, jak to je :-)
Zachycená událost na document.documentElement se vyvolává při stisknutí klávesy kdekoliv ve stránce a ta podmínka říká „zmačknul-li uživatel klávesu uvnitř elementů se jménem značky INPUT nebo TEXTAREA, nech prohlížeč vykonat výchozí činnost, která by se při zmáčknutí měla stát, a nic dalšího už nedělej“.
rudla
Profil
Chamurappi
Takže to ani přepisovat nemusím, nic s tím dělat nemusím, ano?
Chamurappi
Profil
Reaguji na rudlu:
Nemusíš.
rudla
Profil
Chamurappi:
Díky za radu. ;)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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