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")
}
}
});
});
Ваша проблема все еще актуальна с верхней демо?