История изменений
Исправление Razip, (текущая версия) :
Пишу клавиатурный тренажер. Ввод символов обрабатываю с помощью oninput (потому что onkeypress и другие гадость). Если пользователь хочет удалить введенный символ или ошибочный, то он нажимает BackSpace и удаляет, но это за собой влечет изменение значения поля ввода, а значит и генерируется событие oninput, которое я и отменяю с помощью флага eventAllowed и обратно ставлю последнему значение true.
Суть моей проблемы в том, что при _удерживании_ BackSpace не генерируется событие oninput, а значит и eventAllowed некому поставить в положение true.
Иначе ввод в game.addChar() не будет пропускаться.
var game = new Game();
var eventAllowed = true;
inputField.onkeydown = function (event) {
if (event.keyCode === 8) { // 8 значит BackSpace, если кто не в курсе
game.deleteChar(inputField.value.length - 1);
// Что-нибудь типа такого, чтобы при удержании
// eventAllowed оставался в true
if (some expression) {
eventAllowed = false;
}
}
};
inputField.oninput = function () {
eventAllowed && game.addChar(inputField.value.substr(-1));
eventAllowed = true;
};
Надеюсь что теперь понятно.
Исходная версия Razip, :
Пишу клавиатурный тренажер. Ввод символов обрабатываю с помощью oninput (потому что onkeypress и другие гадость). Если пользователь хочет удалить введенный символ или ошибочный, то он нажимает BackSpace и удаляет, но это за собой влечет изменение значения поля ввода, а значит и генерируется событие oninput, которое я и отменяю с помощью флага eventAllowed и обратно ставлю последнему значение true.
Суть моей проблемы в том, что при _удерживании_ BackSpace не генерируется событие oninput, а значит и eventAllowed некому поставить в положение true.
Иначе ввод в game.addChar() не будет пропускаться.
var game = new Game();
var eventAllowed = true;
inputField.onkeydown = function (event) {
if (event.keyCode === 8) { // 8 значит BackSpace, если кто не в курсе
game.deleteChar(inputField.value.length - 1);
// Что-нибудь типа такого, чтобы при удержании
// eventAllowed оставался в true
//
// if (some expression) {
eventAllowed = false;
// }
}
};
inputField.oninput = function () {
eventAllowed && game.addChar(inputField.value.substr(-1));
eventAllowed = true;
};
Надеюсь что теперь понятно.