jquery事件目标没有关注新目标

时间:2017-10-23 23:57:38

标签: jquery

我正在尝试使用键盘标签导航表单。

    $(document).on('keydown', function(e){
        if (e.which != 9) {
        }else{
            if($(e.target).hasClass('pro')){
                $('#np').hide();
            }else{
                $('#np').show();
            }
        }
    });

这里奇怪的是e.target不会在光标闪烁的输入处触发,但在之前的输入中,我该如何解决?

2 个答案:

答案 0 :(得分:2)

或者您可以使用keypress事件

$(document).on('keypress', function (e) {
    if (e.which === 9) {
        if ($(e.target).hasClass('pro')) {
            $('#np').hide();
        } else {
            $('#np').show();
        }
    }
});

答案 1 :(得分:0)

将事件更改为keyup而不是keydownkeydown将在前一个输入字段处触发,并且在触发keyup时,焦点已经可用于新输入字段。在下面的代码中,console.log将打印新的输入元素。

$(document).on('keyup', function (e) {
    console.log($(e.target))
    if (e.which != 9) {
    } else {
        if ($(e.target).hasClass('pro')) {
            $('#np').hide();
        } else {
            $('#np').show();
        }
    }
});