2014-10-08 59 views
1

我有以下的JavaScript,如果我应该按下向下箭头,并且光标会下到下一行。我似乎无法做到这一点。有什么建议么?Keydown不在桌子上工作

jQuery的

$('td').keypress(function(evt){ 
    if(evt.which == 40){ 
     event.preventDefault(); 
     var cellindex = $(this).index() 
     var rowindex = $(this).parents('tr').index() + 1 
     $(this).parents('table').find('tr:eq('+rowindex+') td:eq('+cellindex+')').focus() 
    } 
}) 

HTML

<table> 
    <tr><td contenteditable>My_Name</td><td>Surname</td></tr> 
    <tr><td contenteditable>My_Name2</td><td>Surname2</td></tr> 
</table> 
+0

猜测这应该是更好地与输入而不是CONTENTEDITABLE。 – 2014-10-08 19:44:19

+0

可能重复[jQuery按键箭头键](http://stackoverflow.com/questions/19347269/jquery-keypress-arrowkeys) – showdev 2014-10-08 19:47:03

+0

应该event.preventDefault()是evt.preventDefault() – gorrilla10101 2014-10-08 20:06:14

回答

0

使用此:在此代码

jQuery(document).ready(function(){ 

    $('td').keydown(function(evt) { 
     if(evt.keyCode == 40) { 
      event.preventDefault(); 
      var cellindex = $(this).index() 
      var rowindex = $(this).parents('tr').index() + 1 
      $(this).parents('table').find('tr:eq('+rowindex+') td:eq('+cellindex+')').focus() 
     } 
    }); 
}); 

或者可以使用向下和向上键事件

jQuery(document).ready(function(){ 
$('td').keydown(function(evt){ 
    if(evt.keyCode == 40){ 
     event.preventDefault(); 
     var cellindex = $(this).index() 
     var rowindex = $(this).parents('tr').index() + 1 
     $(this).parents('table').find('tr:eq('+rowindex+') td:eq('+cellindex+')').focus() 
    }else if (evt.keyCode == 38){ 
      event.preventDefault(); 
     var cellindex = $(this).index() 
     var rowindex = $(this).parents('tr').index() - 1 
     $(this).parents('table').find('tr:eq('+rowindex+') td:eq('+cellindex+')').focus() 
    } 
}) 
}); 

jsfiddle

+0

对你的一点解释解决方案将有所帮助。 – showdev 2014-10-08 19:47:35

+0

在keydown上使用的关键事件和event.keyCode = 40这个代码向下箭头,你需要得到的keyDown和创造如果keydown代码== 40然后下一个TDD – 2014-10-08 19:50:06

+1

'修饰符和非打印键...触发keydown事件,但不是按键事件“ - [api.jquery.com](http://api.jquery.com/keypress/) – showdev 2014-10-08 19:52:56