2016-05-29 21 views
-1

我试图实现我不确定将会工作的内容。我想要做的是当用户按任何字母键时改变细胞聚焦。我也希望这封信出现在源单元格中,但不在目标单元格中​​。我试图做的是:按键更改单元格重点

用户通过点击它标志着一个细胞

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之后一直写一个A键入,跳转到下一个单元格并将其聚焦

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

上述逻辑的问题是,源单元格和目标单元格现在都有字母A.

有什么办法可以防止将信件添加到目标单元格吗?

在此先感谢!

编辑

的源小区是一个我标记和目的小区是一个我跳跃。

+0

你能澄清**源**和**目标**单元是什么? –

+0

什么是你的(“* [MCVE] *”)HTML和JavaScript?否则,你会得到很多猜测,并可能为零,有用,可以理解或直接相关的答案。此外,*没有相关的代码*这个问题是无关紧要的,因为它们都不包含你的代码*,它不完全清楚你要问什么,它也太宽泛 - 因为你实际上期待我们重现您现有的努力并为您的问题实施解决方案。 –

+0

@RichardSilvertass检查我的答案,并接受它,如果它可以帮助你。 –

回答

0

清除在JQuery的语法按键

markedCell.innterText=''; 

后焦点的单元格

$('#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

看到这个[fiddle](https://jsfiddle.net/silvertassen/Lzsnf8mw/)。标记一个单元格并输入'r'向右移动,'d'向下移动。 –