2016-05-29 9 views
-1

Ich versuche etwas zu erreichen, ich bin mir nicht sicher, wird jemals funktionieren. Ich möchte den Zellfokus ändern, wenn der Benutzer eine Buchstabentaste drückt. Ich wünsche auch, dass der Buchstabe in der Quellzelle, aber nicht in der Zielzelle erscheint. Was ich versucht zu tun ist:ändern Zelle Fokus auf Tastendruck

Benutzer eine Zelle markiert durch Anklicken

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

Benutzer ein A in markierten Zelle

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

schreibt Nachdem die A wurde getippt, zur nächsten Zelle springen und sie fokussieren

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

Das Problem mit der obigen Logik ist, dass sowohl die Quell- als auch die Zielzelle jetzt den Buchstaben A enthält.

Gibt es eine Möglichkeit zu verhindern, dass der Brief der Zielzelle hinzugefügt wird?

Vielen Dank im Voraus!

EDIT

Die Quelle Zelle ist diejenige, die ich zu markieren und die Zielzelle ist derjenige Ich springe.

+0

Können Sie klären, was die ** Quell ** - und ** Zielzellen ** sind? –

+0

Was ist Ihr ("* [MCVE] *") HTML und JavaScript? Andernfalls erhalten Sie viele Vermutungen und wahrscheinlich keine sinnvollen, verständlichen oder direkt relevanten Antworten. Auch, * ohne Ihren relevanten Code * ist diese Frage off-topic, da sowohl * Ihr Code * nicht enthält, es ist nicht ganz klar, was Sie fragen und es ist auch zu breit - da Sie erwarten, dass wir beide reproduzieren Ihre bestehenden Bemühungen und implementieren Sie eine Lösung für Ihr Problem. –

+0

@RichardSilvertass Überprüfen Sie meine Antwort und akzeptieren Sie sie, wenn es Ihnen hilft. –

Antwort

0

Klar die fokussierte Zelle nach keyPress

markedCell.innterText=''; 

in JQuery Syntax

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

Ich habe eine fiddle, die das gesamte Feature implementiert

Und hier ist der JS Code:

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

Kann dies für eine Tabelle mit bearbeitbaren Zellen implementiert werden? Weil ich das verwende. –

+0

Ja, sag mir einfach deine 'HTML', und ich werde dir bei der Implementierung helfen –

+0

Siehe [fiddle] (https://jsfiddle.net/silvertassen/Lzsnf8mw/). Markieren Sie eine Zelle und geben Sie "r" ein, um nach rechts zu gehen, und "d", um nach unten zu gehen. –