Tastatursteuerung in Funktion unterbinden

Jan-Frederik Stieler

Monsterator
Moderator
Hallo,
ich habe eine Tatstaursteuerung für Bootstrap Carousel eingebaut:


Code:
 var keysArray        =    new Array(37, 39),
       keys                =    {left: keysArray[0], right: keysArray[1]};
      //Keyfunctions
    $(document).on('keydown', function (e) {
        switch (e.which) {   
       
            case keys.right : //right (arrow right)
                $('.carousel-control[data-slide="next"]').trigger('click');  
            break;
               
            case keys.left : //left (arrow left)
                $('.carousel-control[data-slide="prev"]').trigger('click');
            break;
                       
            default: return; // exit this handler for other keys
        }
        e.preventDefault();
    });
nun möchte ich diese Tastatursteuerung ausschalten wenn z.B. ein Modalfenster offen ist. Wie kann ich innerhalb einer Funktion das Ausführen von keydown unterbinden?

Viele Grüße
 
Du kannst doch einfach eine Variable einführen, die prüft, ob das Carousel angesteuert werden soll oder nicht. Und die setzt Du dann dementsprechend auf "false", wenn e.g. ein Modalfenster geöffnet wird:
Javascript:
var enabled = true;

$(document).on("keydown", function (e) {
  if ( enabled ) {
    switch (e.which) {
      // ...
    }
  }
});
 
Hallo @einfach nur crack,
sowas ähnliches hatte ich gestern auch aber eben mit dem data-Attribut (data-open="open").
Das hat aber nicht funktioniert weil ich die zu prüfende Variable global dekalariert hatte und nicht innerhalb der .on Funktion.
Das hast du jetzt ja auch gemacht.

Javascript:
    //Keyfunctions
    $(document).on('keydown', function (e) {
   
        var modalOpen    =    mainContentBox.attr('data-open')
   
        if(modalOpen === 'close'){
            switch (e.which) {   
           
                case keys.right : //right (arrow right)
                    $('.carousel-control[data-slide="next"]').trigger('click');  
                break;
                   
                case keys.left : //left (arrow left)
                    $('.carousel-control[data-slide="prev"]').trigger('click');
                break;
                           
                default: return; // exit this handler for other keys
            }
            e.preventDefault();
        }
    });
 

Neue Beiträge

Zurück