webdesign / development + awesome
archivovaný archívny archív
Vyskúšajte si ako to funguje.
$(function() { var form = $('#form'); // zmenit podla potreby form.keydown(function(e) { if (e.keyCode == 16) form.data('shiftPressed', true); }).keyup(function(e) { if (e.keyCode == 16) form.data('shiftPressed', false); }).keypress(function(e) { if (e.keyCode == 13 && form.data('shiftPressed')) { form.submit(); return false; // OH NO, STOP THE ENTERS!! } }); })
Stačí skopírovať uvedený kód a podľa potreby zmeniť riadok var form = $('#form');
Tento predpokladá formulár s id="form"
.
Funkcionalita sa skladá z troch častí - čo sa stane pri keydown
, keyup
a keypress
. Kto klikne na "povedz mi o tom viac", tomu o tom bude povedané viac :)
keydown
je udalosť, ktorá nastane pri zatlačení ktoréhokoľvek tlačítka.
form.keydown(function(e) { if (e.keyCode == 16) form.data('shiftPressed', true); })
Čo teda robíme? Prikazujeme nášmu formuláru, aby odchytával keydown
udalosť / event. Ak nastane, pustí uvedenú funkciu. Ok, čo je to e
? To e
je Event Object. Nesie v sebe rôzne informácie o udalosti, napríklad numerický kód stlačeného tlačítka. 16 je shift. Ak bol stlačený práve shift, použijeme jQuery.data() na uchovanie toho, že shift je skutočne stlačený.
keyup
je udalosť, ktorá nastane pri pustení tlačítka. You know, keď ho prestaneme držať stlačené :)
form.keyup(function(e) { if (e.keyCode == 16) form.data('shiftPressed', false); })
Ak sme pustili tlačítko a toto tlačítko bol práve shift, už shift nedržíme, preto hodnotu shiftPressed
zmeníme na false
, pretože ho už nedržíme :)
keypress
je udalosť, ktorá nastane pri stlačení tlačítka, ktoré je schopné aj niečo reálne napísať. To je rozdiel od keydown
. Napr. ten náš shift nenapíše nič, "a" napíše "a" a taký enter "napíše" nový riadok.
form.keypress(function(e) { if (e.keyCode == 13 && form.data('shiftPressed')) { form.submit(); return false; // OH NO, STOP THE ENTERS!! } })
keyCode
pre enter je 13. Ak sme stlačili enter, potrebujeme ešte skontrolovať, či držíme stlačený aj shift. Takže ak form.data('shiftPressed')
je true, sme good to go a odošleme formulár pomocou form.submit();
Ak ale máme textareu a stlačíme enter, pridá nám do nej nový riadok. return false;
tomu zabráni.
So yeah, teraz máme formulár, ktorý sa dá odoslať jednak tradične a jednak klávesovou skratkou shift+enter. Pre nás lenivých, čo je nám veľa roboty ruku od klávesnice odlepiť.
Mimochodom, ak používate firebug, skúste console.log(e);
a uvidíte aký ďalší šikovný stuff so sebou event object teperí. A ak nepoužívate, začnite :)
Archivovaný archív je bez komentárov. Radšej.
1 komentár
komentuj ku každému komentáru sa v databáze ukladá iba meno, text a dátum, iba za účelom zobrazenia pod článkomneukladá sa email, IP adresa ani informácie o prehliadači a údaje sa nepoužívajú na reklamu, newsletter, na žiadnu ekonomickú aktivitu, nikam sa neposielajú, sú v databáze len aby sa mohli zobraziť pod článkom