向上箭头上的Keydown不会阻止默认,仍会使div滚动

时间:2017-02-15 05:36:19

标签: javascript jquery scroll

我有一个聊天区,消息在哪里,以及下面的聊天输入。正如您在此结构中所看到的那样:

enter image description here

加载后我运行此功能:

function activate_key_detection()
{
    $(document).keydown(function(e)
    {
        code = (e.keyCode ? e.keyCode : e.which);

        if(e.ctrlKey)
        {
            if(window.getSelection().toString() != "")
            {
                return;
            }
        }

        $('#chat_input').focus();

        if(code == 13)
        {
            send_to_chat();
            e.preventDefault();
            return false;
        }

        if(code == 38)
        {
            $('#chat_input').val(last_input);
            e.preventDefault();
            return false;
        }

        if(code == 27)
        {
            if($('#overlay').css('display') == 'block')
            {
                hide_boxes();
                e.preventDefault();
                return false;
            }
            else
            {
                clear_input();
            }
        }

    });
}

正如您所看到的那样,它首先聚焦输入,当键是向上箭头(38)时,它会捕获它,修改输入并尝试阻止它们的默认行为键。

问题是,当我第一次点击聊天区域内部,然后按向上箭头时,它仍会将聊天区域滚动一行。后续按下向上箭头不会进一步滚动聊天区域。

我也试过在那里添加e.stopPropagation(),但无济于事。

欢迎任何帮助。

0 个答案:

没有答案