2014-10-30 3 views
2

Я ищу способ отключения всех кодов клавиш до тех пор, пока функция next() не будет закончена.Отключить ввод ключа до завершения функции

Я пробовал использовать return false, но это не сработало.

nextDown = {}; 
    $(document).keydown(function(event){ 
     if(event.keyCode == '39'){ 
      if (nextDown['39'] == null) { 
       next(); 
       nextDown['39'] = true; 
      } 
     } 
    }); 
    $(document).keyup(function(event) { 
     nextDown[event.keyCode] = null; 
    }); 

Есть ли способ связать ложь против keydown то после того, как функция является полным отвязать?

+0

Как вы определяете, что * следующий() * завершена? –

ответ

2

насчет объявить переменную для этого. Является ли следующий код решением вашей проблемы?

nextDown = {}; 
var _lock = false; 
    $(document).keydown(function(event){ 
     if(event.keyCode == '39'){ 
      if (!_lock && nextDown['39'] == null) { 
       _lock = true; 
       next(); 
       nextDown['39'] = true; 
      } 
     } 
    }); 
    $(document).keyup(function(event) { 
     nextDown[event.keyCode] = null;  
    }); 


    function next() { 
     ... 
     _lock = false; 
    } 

Если нет, пожалуйста, предоставьте jsfiddle пример

0

Существует очень простой способ достичь этого. Сначала создайте глобальную переменную и установите ее на 0. Затем установите cont в 1 перед next() и вернитесь к 0 после завершения следующей(). Это позволит вам создавать операторы if, где cont == 1 остановит ваши другие функции, и cont == 0 позволит им запускать.

var cont = 0; 

    $(document).keydown(function(event){ 
     if(event.keyCode == '39' && cont == 0){ 
      if (nextDown['39'] == null) { 
       cont = 1; 
       next(); 
       cont = 0; 
       nextDown['39'] = true; 
      } 
     } 
    }); 
    $(document).keyup(function(event) { 
     if (cont == 0) { 
      nextDown[event.keyCode] = null; 
     } 
    }); 
+0

Это хорошее решение, но вместо использования целочисленной переменной вы должны использовать логическое значение для удобочитаемости. Кроме того, я бы переименовал переменную в «DisableKeyStrokes» или что-то более описательное. –

Смежные вопросы