Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zablokowanie przytrzymywania
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
wezyrno
Jak sprawić, aby nie można było wywoływać danej funkcji poprzez
określony klawisz, gdy się go przytrzymuje? Tylko, gdy się go przyciska.

Kod
var mozna = true;
$(document).unbind('keypress');
$(document).keydown(function(e){
    var numer = e.keyCode;
    if(numer == 40  && mozna == true){
        mozna = false;

        funkcja(4);
        setTimeout(function(){mozna = true;},600);
    }
}


W tym wypadku jest tak, że należy odczekać 600ms, aby móc wywołać funkcje.
I opóźnia to rzecz jasna wywołanie jej. Ale nie zmienia to faktu, ze mozna to robic przytrzymując klawisz, a tego bym nie chciał.
Pyton_000
keyup ?
wezyrno
nie wiem jak to zastosować / dostosować sad.gif
Pyton_000
Kod
$(document).keyup(function(e){
wezyrno
Tak właśnie miałem, i gdy dałem do tego:
mozna = false;

To w ogole po kliknieciu sie funkcja nie wywolywala.
Tak jakby nei dotyczylo to tylko wciskania, ale również pojedynczego kliknięcia.
trueblue
  1. $(document).keypress(function(e){
  2. var numer = e.keyCode;
  3. if(numer == 40 && $(document).data('keypressed')!==true){
  4. $(document).data('keypressed',true);
  5. funkcja(4);
  6. }
  7. });
  8. $(document).keyup(function(e){
  9. $(document).data('keypressed',false);
  10. });
wezyrno
Wielkie dzięki.
Ale mam jeszcze jedno pytanko. Co wstawić do tego kodu, aby po kliknięciu strzałki nie przesuwała się jednocześnie strona w poziomie (gdy ktos ma mniejszą rozdzielczość ekranu)?
Pyton_000
przed całym kodem daj to
Kod
window.addEventListener("keydown", function(e) {
    // space and arrow keys
    if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
        e.preventDefault();
    }
}, false);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.