У меня есть HTML-форма с множеством текстовых полей, все из которых занимают только один символ (подумайте кроссворд).Когда буква вводится в поле ввода, я использую jQuery, чтобы перейти к следующему.Это работает нормально, за исключением шведских символов åäö (возможно, затронуты и другие международные символы).
Я привязываю прослушиватель событий к событию keyup и использую event.keyCode и event.which, чтобы определить,нажатой клавишей была буква (если это была какая-то специальная клавиша, события проходят нетронутыми).
Проблема в том, что когда я нажимаю å, ä или ö, оба события event.keyCode и event.which равны 0. КогдаЯ проверяю объект события в Firebug, я не могу найти ни одного атрибута, который, кажется, содержит код ключа.
Код выглядит так:
var crossword = $('article.crossword');
crossword.bind('keyup', function(event) {
var target = $(event.target, crossword);
if (target.hasClass('crossword_letter_input')) {
var pressedKey = event.which ? event.which : event.keyCode;
var target_value = target.val();
var target_tabindex;
// Regular alphanumeric keys have keyCodes between 48 and 90.
if (pressedKey >= 48 && pressedKey <= 90 && target_value.length) {
target_tabindex = parseInt(target.attr('tabindex'));
$('input.crossword_letter_input[tabindex=' + (target_tabindex + 1) + ']', crossword).focus();
}
}
});
Я использую событие keyup вчтобы переместить фокус после ввода символа в текстовое поле.
Если вам известен какой-либо плагин jQuery или ванильный JS, который мог бы полностью заменить его, это также было бы решением.
РЕДАКТИРОВАТЬ: я сделал временное (и некрасивое) исправление, вставив следующее еще, если:
// å, ä and ö reports keyCode 0 for some reason.
else if (pressedKey === 0 && target_value.length) {
target_tabindex = parseInt(target.attr('tabindex'));
$('input.crossword_letter_input[tabindex=' + (target_tabindex + 1) + ']', crossword).focus();
}
Таким образом, я просто предполагаю, что если event.which и event.keyCode были оба0, а длина значения в поле больше 0, фокус должен быть перемещен на следующий вход.Предположим, вещи без знания не чувствуют себя прекрасно ...