knockout.js keyup和keydown在具有敲除绑定的表上不起作用

pkwftd7m  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(166)

我需要使用key up和key down在表行上滚动。为此,我需要捕获table div上的key事件。如果我用“click”事件替换“keyup”,它工作正常,但相同的代码段不适用于key up和key down。我无法找出问题。

$('#patientWL').on('keyup', '.bodyTable tbody tr', function(e) {
    if (e.keyCode == 38) {
        alert('key up');
    } else if (e.keyCode == 40) {
        alert('key down');
    }
});

我的问题的工作小提琴可以看到here

tyky79it

tyky79it1#

请注意,这不是一个特定于淘汰赛的问题。问题是与元素处理keyup/down/press事件的方式有关。
table(或trtd)在默认情况下不能被赋予焦点。但是,您可以通过添加tabindex属性来更改这一点:

<tr tabindex="0" id="example"></tr>

然后,您可以为tr提供焦点,并使用hover事件模糊它:

$("#example").hover(function() {
    this.focus();
}, function() {
    this.blur();
}).keydown(function(e) {
    alert(e.keyCode);
});

tr具有焦点时,它将接受键盘事件。

gg0vcinb

gg0vcinb2#

虽然这是一个老问题,但在这里添加一个自定义绑定处理程序实现是值得的(基于以下帖子:(如果是12):
第一个

相关问题