Я должен поддерживать форму ввода данных, закодированную кем-то давно ушедшим, которая использует Javascript для того, чтобы заставить ключ ввода вести себя подобно клавише Tab, чтобы люди, вводящие свои данные, могли очень быстро печатать -, - и т. Д. Это настроено так, потому что они должны вводить 3 числа для каждого дня месяца, один месяц на отправку формы, и они обычно ждут, пока у них не будет данных за целый месяц, чтобы сделать это.
Вот функция JS, которая переопределяет клавишу ввода:
function handleEnter(field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++)
if (field == field.form.elements[i])
break;
i = (i + 1) % field.form.elements.length;
field.form.elements[i].focus();
return false;
} else {
return true;
}
}
На самом деле это работает нормально для всех, в каждом браузере, который я тестировал, кроме одного клиента, который должен вводить данные для нескольких местоположений каждый месяц. На прошлой неделе клавиша Enter перестала работать для нее в этой форме. Более того, теперь она не может даже щелкнуть в третьем столбце каждого дня или перейти к последнему дню строки каждого месяца. Я наблюдал эту проблему при совместном использовании экрана, но я не могу управлять ее компьютером или отлаживать JS удаленно. (Клавиша Tab перемещает курсор, но в произвольные поля - даже если все значения tabindex установлены правильно.)
Я не могу воссоздать эту проблему ни на одном компьютере. Она говорит, что она использовала ту же самую установку (Win XP / IE 8) в течение шести месяцев, и проблема только началась. Я пробовал различные комбинации браузеров / ОС, в том числе две машины с Win XP, работающие под управлением IE 8. (Странное примечание: она сказала, что не может нажать на третье поле при использовании своего iPad в форме, но, конечно, мой айпад с ним нормально работает.)
Я видел этот вопрос в StackOverflow, который казался связанным, за исключением того, что я не пытаюсь изменить нажатие клавиши, просто перехватить его, предотвратить поведение по умолчанию и выполнить другое поведение:
Как преобразовать Enter в Tab (с изменением фокуса) в IE9? Работало в IE8
Я подумала, что, возможно, у нее на компьютере какое-то вредоносное ПО / кейлоггер, вызывающее эту проблему, но проблема с iPad ставит это под вопрос. Может ли она иметь вредоносное ПО в своем роутере? Я должен заставить это работать на нее снова, но я не могу воссоздать эту проблему, чтобы отладить ее.
Кто-нибудь когда-нибудь видел что-нибудь подобное раньше?