Давайте предположим, что у меня есть такой код:Как получить последовательность нажатия клавиш в javascript?
function onKeystroke(e)
{
if (e.keyCode == 39) //Arrow Right
{
currentCell += 1;
}
if (e.keyCode == 37) //Arrow Left
{
currentCell -= 1;
}
if (e.keyCode>47 && e.keyCode<58) //Numbers 0-9
{
cells[currentCell] = e.keyCode - 48;
}
}
Но мне нужно не только получить один номер, но и две цифры номера. Программа должна вести себя следующим образом: - если пользователь перемещается в пустую ячейку и нажимает клавишу «2», в ячейке появляется цифра «2». Если он теперь нажимает «3», число становится «23». Следующее нажатие клавиши (скажем, «7») запускает его и помещает в ячейку «7». - если пользователь перемещается в ячейку, где «2» уже записано, а затем нажимает «3», появляется только «3», а последующий такт «7» делает его «37».
Таким образом, перемещение из ячейки должно «закрыть» ее аналогично тому, что происходит в MS Excel.
Я знаю, что я могу отслеживать, что ячейка находится в открытом или закрытом состоянии, но для этого потребуется привязать ячейку «закрытие» ко всем функциям движения. И это немного проблема, потому что у меня гораздо больше двух из них в моей реальной программе. Это не невозможно, но я хотел бы знать, есть ли более хороший подход, поэтому я мог бы получить ожидаемое поведение, просто написав правильный скрипт для if (e.keyCode> 47 & & e.keyCode < 58) case ..
Да, спасибо! Но могу ли я позволить избежать редактирования всех функций движения? –
Что значит «все функции движения»? Вам просто нужно повторно использовать ту же функцию 'onKeystroke'. – plalx
Я имею в виду «подфункции» или просто «части» в «if (e.keyCode == some movement)» случаи –