jQuery.on('keydown') 当键为 "enter" 时被截获 (?) 并且不起作用

jQuery.on('keydown') when key is "enter" is being intercepted (?) and won't work

我正在修改大量现有应用程序。在此应用程序中,页面顶部有一个搜索栏。我需要记录用户在搜索栏中按下 "Enter" 的时间,以便我可以触发一些逻辑。

看起来很简单。我可以只使用 jQuery keydown 甚至 keypress 事件来记录按下的键,然后如果键值匹配 13 for "Enter" 我可以继续。

<form action="https://www.google.com" method="get" target="_blank">
    <input id="search-field"/>
</form>

<script>
    $(document).on('keydown', "#search-field", function (e) {
        if (e.which == 13)
        {
            //"some logic"
        }
    });
</script>

这会捕获每个按键 EXCEPT "enter"!当我在我的 JavaScript 中创建一个 alert(e.which); 时,每个键的值都会弹出,但是当我尝试 "enter" 它只是提交表单并加载一个新页面而不会触发警报。

我的问题: 在不知道关于搜索框的现有代码的情况下(我几乎没有访问权限)有什么办法可以得到这个 keydown事件触发?为什么会失败?

注意:我必须用jQuery.on()这种格式来处理事件

您必须阻止表单的正常行为。在您的逻辑中使用:e.preventDefault() 以防止提交表单。另外,请考虑改用事件 keyUp

我没有弄清楚如何绕过其他事件进程。但我确实找到了阻止我的密钥被识别的原因:

在文件 Site.js 中有一些 JavaScript:

$('#SearchTerm').keydown(function (event)
    {
        return handleKey(event);
    });

    $('#SearchTerm').keyup(function (event)
    {
        // Some stuff here...
        return false;
    }

此文件包含在 之前 我拥有的 JavaScript 文件。因为它是第一个并且有自己的 keydown/keyup 事件,所以在按键有机会进入我自己的脚本之前,它正在执行它们并做自己的 e.preventDefault()