【问题标题】:Keydown on table using jQuery使用 jQuery 对表格进行 Keydown
【发布时间】:2014-10-08 19:42:11
【问题描述】:

我有以下 Javascript,如果我应该按下向下箭头,光标将向下移动到下一行。我似乎无法做到这一点。有什么建议吗?

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>

【问题讨论】:

  • 猜测这应该是更好的输入而不是 contenteditable。
  • jQuery Keypress Arrow Keys 的可能重复项
  • 应该 event.preventDefault() 是 evt.preventDefault()

标签: jquery html-table


【解决方案1】:

使用这个:

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

【讨论】:

  • 稍微解释一下您的解决方案会很有帮助。
  • 在 keydown 上使用键事件和 event.keyCode =40 此代码用于向下箭头,如果 keydown 代码 ==40 然后下一个 td,您需要在 keyDown 上创建并创建
  • modifier and non-printing keys ... trigger keydown events but not keypress events -- api.jquery.com
  • 对我来说适用于常规 HTML 文件。我使用 smarty/php 组合,它似乎没有用。我将相同的脚本放在 .tpl 中,但它不起作用。我知道 Jquery 正在被访问,因为另一个功能有效。
  • 它没有。我想知道 smarty 模板是否由于某种原因没有看到代码
猜你喜欢
  • 2019-03-03
  • 1970-01-01
  • 2018-12-06
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多