JQuery Keyup работает неправильно

Я пытаюсь увеличивать целочисленную переменную при каждом нажатии клавиши Enter. Эта переменная затем используется для вывода значения из массива.

$(document).keyup(function(e) {
            if (e.keyCode == 13) {
                console.log(++currSteps);
                $('#output').text(outNum[currSteps])
                if(outNum[currSteps] % 2 == 0){
                    $('body').css("background", "#4b84e5")
                }
                else if(outNum[currSteps] == 1){
                    $('body').css("background", "#9dd622")
                }
                else{
                    $('body').css("background", "#d16323")
                }
            }
        });    

Проблема возникает, когда я нажимаю Enter. При первом нажатии она работает правильно и увеличивает переменную currSteps и отображает следующее значение в массиве. Однако, когда я снова нажимаю Enter, он возвращает его к исходному значению currStep, пока Enter удерживается, будет отображаться исходное значение.

Теперь да, это событие для keyupпоэтому имеет смысл, что все будет работать странным образом keydown, Однако... если я открою инструменты разработчика и щелкну в консоли, а затем вернусь к исходному окну, keyup код работает отлично. Почему это работает только после открытия инструментов разработчика?

Я пробовал это на jQuery 1.11.1 и 1.10.2.

Редактировать: currSteps а также outNum деклараций.

$('#in').click(function(){
            $('#output').empty();
            $('#steps').empty();
            var steps = 0
            currSteps = 0
            var inNum = parseInt($('#input').val());
            var col = '#ffffff'
            outNum = []
            outNum.push(inNum)
 ...

1 ответ

Решение

Я позволил себе написать немного ваших отсутствующих переменных defition: JSFiddle

$(document).ready(function() {
    var currSteps = 0;
    var outNum = { 0: 0, 1: 1, 2: 2 };
    $(document).keyup(function(e) {
        if (e.keyCode == 13) {
            console.log(++currSteps);
            $('#output').val(outNum[currSteps] + ' ' + currSteps)
            if(outNum[currSteps] % 2 == 0){
                $('body').css("background", "#4b84e5")
            }
            else if(outNum[currSteps] == 1){
                $('body').css("background", "#9dd622")
            }
            else{
                $('body').css("background", "#d16323")
            }
        }
    });    
});

Ваша проблема все еще актуальна с верхней демо?

Другие вопросы по тегам