Keydown不在桌子上工作
问题描述:
我有以下的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>
答
使用此:在此代码
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()
}
})
});
猜测这应该是更好地与输入而不是CONTENTEDITABLE。 – 2014-10-08 19:44:19
可能重复[jQuery按键箭头键](http://*.com/questions/19347269/jquery-keypress-arrowkeys) – showdev 2014-10-08 19:47:03
应该event.preventDefault()是evt.preventDefault() – gorrilla10101 2014-10-08 20:06:14