自定义箭头键导航无法正常工作(部分工作)

Posted

技术标签:

【中文标题】自定义箭头键导航无法正常工作(部分工作)【英文标题】:Custom arrow key navigation not working properly (one part works) 【发布时间】:2015-08-26 19:22:54 【问题描述】:

我有一个带有动态添加行的大型 html 表。

表格具有标准结构(包括thead、tbody 和tfoot)。

在此表中,有可编辑的 TD(具有 class "editable" 并包含 contenteditable div)和不可编辑的 TD(没有“可编辑”类并且没有包含一个div)。

我正在尝试创建一个自定义箭头键导航,允许我从一个可编辑的 TD 跳转到下一个或上一个(就像在 Excel 表格中一样)。

为了对此进行测试,我使用了以下示例,但这只是部分工作,即警报显示正确,但我无法对相应的 div 执行任何操作(例如更改其背景或添加文本等)。

谁能告诉我我在这里做错了什么?

我的 jQuery(已准备好文档):

$(document).keydown(function(e)
    switch(e.which)
        case 37: // left arrow
            alert('test left');
            $(this).closest('td').prevUntil('td.editable').find('div').text('test');
            break;
        case 39: // right arrow
            alert('test right');
            $(this).closest('td').nextUntil('td.editable').find('div').text('test');
            break;
        default: // exit for other keys
            return;
    
    e.preventDefault(); // prevent default action
);

我的 HTML(示例行):

<tr>
    // ...
    <td class="editable"><div contenteditable="true"></div></td> <!-- editable -->
    <td class="editable"><div contenteditable="true"></div></td> <!-- editable -->
    <td></td> <!-- non-editable -->
    <td></td> <!-- non-editable -->
    <td class="editable"><div contenteditable="true"></div></td> <!-- editable -->
    // ...
</tr>

【问题讨论】:

请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”! 【参考方案1】:

您的代码中的this 指的是document 不是单个元素

如果你使用$(e.target),你可以获得单个元素

另外你应该使用next()函数而不是nextUntil()

$(e.target).closest('td').nextAll('td.editable:first').find('div').text('test');

【讨论】:

非常感谢!如果所有 TD 都是可编辑的,但如果中间有不可编辑的 TD,则此方法无效 + 它似乎不适用于跨 TR,即从一行中的最后一个可编辑 TD 跳转到下一行中的第一个。对此有什么想法吗? 谢谢 - 让我检查一下。 :) 现在这可以在一行内工作,但当您位于行尾并需要跳转到下一行等时仍然不行。 如果你想在行之间跳转,实现向上/向下按钮会更容易。如果你想用右键移动到那里,你必须有条件地检查它是否是行中的最后一项,然后选择下一行中的第一项 有道理。我将尝试实现条件检查,因为我认为如果用户在使用箭头键时不必切换箭头键,这对用户来说会更容易。再次感谢!

以上是关于自定义箭头键导航无法正常工作(部分工作)的主要内容,如果未能解决你的问题,请参考以下文章

Spring @Cacheable 在 Spring 中无法与自定义键一起正常工作

SwiftUI:导航在带有部分的列表中无法正常工作

自定义 UITableview 单元格可访问性无法正常工作

反应:带有自定义钩子的滑块无法正常工作

在使用 keyPressEvent 子类化 QTableView 后,我失去了对箭头键的使用。如何在保持自定义信号的同时轻松使用它们进行导航?

自定义 Snackbar 无法正常工作