2016-05-29 5 views
-1

Я пытаюсь достичь чего-то, что я не уверен, что когда-либо будет работать. Я хочу, чтобы изменить фокус ячейки, когда пользователь нажимает любую буквенную клавишу. Я также хочу, чтобы письмо появилось в исходной ячейке, но не в ячейке назначения. То, что я пытался сделать, это:change cell focus on keypress

Пользователь отмечает ячейку, щелкнув по нему

table.onclick = function tableMouseListener(event) { 
    markedCell = event.target; 
    markedCellRow = markedCell.parentNode.rowIndex; 
    markedCellCol = markedCell.cellIndex; 
}; 

Пользователь пишет А в отмеченной ячейке

$(document).keypress(function(e){ 
    if (e.keyCode == 65) { 
    markedCell.appendChild(document.createTextNode(String.fromCharCode(e.keyCode))); 
    jumpToNextCell(); 
    }  
}); 

После А было напечатайте, перейдите к следующей ячейке и сфокусируйте ее

function jumpToNextCell() { 
    table = document.getElementById('myTable'); 
    markedCellCol++; 
    markedCell = table.rows[markedCellRow].cells[markedCellCol]; 
    markedCell.appendChild(document.createTextNode('\u0020')); 
    markedCell.focus(); 
} 

Проблема с логикой выше заключается в том, что как исходная, так и целевая ячейка теперь имеют букву A.

Есть ли способ предотвратить добавление буквы в ячейку назначения?

Заранее благодарен!

EDIT

Клетка источника является один я отмечаю и ячейка назначения является один я прыгаю.

+0

Можете ли вы уточнить, что такое ** источник ** и ** целевые ** ячейки? –

+0

Что вы ("* [MCVE] *") HTML и JavaScript? В противном случае вы получите много догадок и, возможно, нулевые полезные, понятные или напрямую релевантные ответы. Кроме того, * без вашего соответствующего кода * этот вопрос не по теме, поскольку он оба * не содержит ваш код *, не совсем понятно, что вы спрашиваете, а также слишком широк - поскольку вы действительно ожидаете, что мы оба воспроизведем ваши существующие усилия и реализовать решение вашей проблемы. –

+0

@RichardSilvertass Проверьте мой ответ и примите его, если он вам поможет. –

ответ

0

Clear сфокусированный Cell после Keypress

markedCell.innterText=''; 

в синтаксисе JQuery

$('#markedCellSelector').val(''); 
0

Я создал fiddle, который реализует все функции

А вот JS код:

var btns = Array.prototype.slice.call(document.querySelectorAll('button')), 
    markedBtn; 

btns.forEach(function(btn) { 
    btn.addEventListener('click', function(){ 
     btns.forEach(function(btn) { 
      btn.classList = Array.prototype.slice.call(btn.classList).filter(function(className) { 
       return className !== 'marked'; 
      }); 
     }); 

     btn.className += ' marked'; 
     markedBtn = this; 
    }); 
}); 

document.addEventListener('keyup', function(e) { 
    var char = String.fromCharCode(e.which); 

    if(markedBtn) { 
     markedBtn.innerText = char; 

     if(markedBtn.nextElementSibling) { 
      markedBtn = markedBtn.nextElementSibling; 
      markedBtn.click(); 
     } 
    } 
}); 
+0

Можно ли это реализовать для таблицы с редактируемыми ячейками? Потому что это то, что я использую. –

+0

Да, просто скажите мне свой «HTML», и я помогу вам с его внедрением. –

+0

Смотрите это [скрипка] (https://jsfiddle.net/silvertassen/Lzsnf8mw/). Отметьте ячейку и введите «r», чтобы перейти вправо и «d», чтобы перейти вниз. –