私がそのようなコードを持っているとしましょう:
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;
}
}
しかし、1 つの数字だけでなく、2 桁の数字も取得する必要があります。プログラムは次のように動作する必要があります。 - ユーザーが空のセルに移動して「2」キーを押すと、セルに数字「2」が表示されます。ここで「3」を押すと、数字は「23」になります。次にキーを押すと (「7」としましょう)、最初からやり直して、セルに「7」を入力します。- ユーザーが「2」が既に書かれているセルに移動してから「3」を押すと、「3」のみが表示され、その後の「7」のストロークによって「37」になります。
そのため、セルの外に移動すると、MS Excel で発生するのと同じようにセルを「閉じる」必要があります。
開いた状態または閉じた状態のセルを追跡できることはわかっていますが、それにはすべての移動関数に「閉じている」セルをアタッチする必要があります。これは少し問題です。私の実際のプログラムには、これらが 2 つ以上あるからです。不可能ではありませんが、if (e.keyCode>47 && e.keyCode<58) の場合に適切なスクリプトを記述するだけで期待される動作を得ることができるように、より良いアプローチがあるかどうかを知りたいです...