当key为“enter”时,jQuery.on('keydown')被截获(?)并且不起作用

时间:2015-07-14 23:33:40

标签: jquery html events jquery-on

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

看起来很简单。我可以使用jQuery keydown甚至keypress事件来记录按下的键,然后如果键值匹配 13 表示“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);时,会弹出每个键的值,但是当我尝试“输入”时,它只需提交表单并加载新页面而不会触发警报。

我的问题:在不知道有关搜索框的现有代码的情况下(我几乎没有访问权限)有什么方法可以让我以某种方式获取此keydown事件?为什么会失败?

注意:我必须使用此格式的jQuery.on()来处理事件

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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

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