2016-05-29 5 views
-1

私は何かを達成しようとしています。私がしたいのは、ユーザーが任意の文字キーを押すと、セルのフォーカスを変更することです。私はまた、手紙をソースセルに表示するが、宛先セルには表示しないことを望む。私は何をしようとしたことはある:セルをキー入力に変更

ユーザーAがされた後

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(); 
    }  
}); 

にAを書き込み、それをクリックすることによって、細胞をマークタイプされ、次のセルにジャンプしてフォーカスを合わせる

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

クリア集中セルKEYPRESS

jQueryの構文で
markedCell.innterText=''; 

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

後、私は全体の機能に

を実装し、ここJSコードですfiddle作成:

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

[fiddle](https://jsfiddle.net/silvertassen/Lzsnf8mw/)を参照してください。セルをマークし、 'r'を押して右に移動し、 'd'を押して下に移動します。 –