Прежде всего, вы запускаете код для каждого нажатия клавиши, прежде чем войти в оператор switch и определить, действительно ли вам нужно что-то делать.
Вам необходимо преобразовать этот код в функцию, которая просто получает TD (в виде простой переменной элемента, а не оболочки Jquery).
Кроме того, вы должны понимать, что JQuery, абстрагирующийся от различий между браузерами, имеет цену, производительность. Например, когда запускается связанное событие, событие имеет умеренный кусок Javascript для запуска до того, как будет вызвана ваша действительная функция события.
Ваше использование currRow.children ("td"). Eq (cellIndex + 1) .find ("input [type = text]"); не собирается быть особенно великим. Вы можете исключить дополнительный div, указав высоту на тд. Тогда предположим, что тд содержит только такой ввод.
var tdNext = td.nextSibling;
var textBox = tdNext ? tdNext.firstChild : null;
if (textBox) $(textBox).select();
Урок иногда заключается в том, что вам необходимо обойти преимущества JQueries для повышения производительности. Приведенный выше код по-прежнему очень совместим с несколькими браузерами.
Вы можете применить аналогичные приемы к другим основным клавишам влево, вверх, вниз и ввести.
Есть ли причина, по которой вы не используете event.shiftKey для обнаружения клавиши Shift? Использование глобальной переменной в том виде, в каком вы ее представляете, не кажется правильным.