Как перемещаться по входным данным, которые находятся в таблице, с помощью клавиш со стрелками?

#javascript #arrow-keys

Вопрос:

Я создаю таблицу, используя dataTables.net и динамически создаваемые данные (с использованием dataTables.net вероятно, это не имеет значения). Несколько ячеек моей таблицы являются входными данными. Как мне перемещаться по этим входным данным с помощью клавиш со стрелками? Заранее спасибо

Ответ №1:

Дал всем моим входным данным одинаковые атрибуты и добавил к ним прослушиватель событий.

 document.querySelectorAll('input[data-type="Ordered"]').forEach(el => {
        el.addEventListener('keydown', (e) => {
            upDownFocusInputs(e, el)
        })
    })



function upDownFocusInputs(e, el) {
    let controlType = el.dataset.type;

    if (e.keyCode == 40) { // down arrow
        e.preventDefault();
        let nextRow = el.closest('tr').nextSibling;

        if (nextRow) {
            let nextInput = nextRow.querySelector(`input[data-type=${controlType}]`)
            nextInput.focus();
        }
    }
    else if (e.keyCode == 38) { // up arrow
        e.preventDefault();
        let prevRow = el.closest('tr').previousElementSibling;

        if (prevRow) {
            let prevInput = prevRow.querySelector(`input[data-type=${controlType}]`)
            prevInput.focus();
        }
    }
}