【问题标题】:Detect Ctrl + A in keyup event在 keyup 事件中检测 Ctrl + A
【发布时间】:2015-08-10 06:21:23
【问题描述】:

我想检测输入中的 Control + A 事件。我可以找到 Control + A 事件,但即使在return false 之后该功能仍在继续。

jsFiddle - http://jsfiddle.net/f6rcgpmh/4/

$('.searchTerm').keyup(function(e) {

    $("#status").text("");

    if (e.ctrlKey) {
        if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
            console.log("Control pressed");
            e.preventDefault();
            return false;
        }
    }
    $("#status").text("This should not work if Ctrl + A is pressed");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="search" class="search">
    <input class="searchTerm" placeholder="Filter Books...">
    <input class="searchButton" type="submit">
</form>
<div id="status"></div>

我希望它在 keyup 而不是 keydown 中工作。因为我正在使用自动搜索,我不想在 keyrelease 之前调用函数。而且 Ctrl + A 在返回 false 时不会突出显示 keydown 中的文本。

【问题讨论】:

  • control + a 在你的浏览器中有什么作用?
  • 它打印文本......它没有破坏功能
  • keydownkeyup 之前触发,对吗?
  • 这是因为当你释放最后一个键时,要么没有ctrlKey,要么keyCode不再是aA
  • @TheWarlock : yupe..check jsfiddle.net/f6rcgpmh/7 .not working for single letter.

标签: javascript jquery


【解决方案1】:

其实不是。您必须将您的活动从 'keyup' 更改为 'keydown'。然后再试一次。你可以检查这个小提琴。 http://jsfiddle.net/ebilgin/f6rcgpmh/5/


如果您需要控制自动完成功能,则必须在发送数据之前进行控制。

Ctrl keyup 事件触发器会导致您的问题。我在您的代码中添加了另一个条件,

if (e.keyCode == 17) // Ctrl key, fires at Ctrl's keyup.
    return false;

您可以查看我的新小提琴http://jsfiddle.net/ebilgin/f6rcgpmh/10/

【讨论】:

  • 我知道它可以在 keydown 中工作。我需要它用于 keyup..原因是我在文本框中使用自动搜索,我只想在 keyup 之后搜索。
  • 如果你准备好你所拥有的小提琴,我可以提供更多帮助。
【解决方案2】:

实际上函数停止了。您遇到的是触发了两个按键事件:一个来自 ctrl,另一个来自 A

第一个按预期返回,因为它确实满足要求:ctrlKey == truekeyCode == 65 || keyCode == 97

但是第二个,只有一个键被按下,所以两个陈述不能一起为真:

  • 如果您上次发布了 ctrl,则ctrlKey 为真,但keyCode == 65 || keyCode == 97 不为真。

  • 如果您上次发布的是 A,那么 ctrlKey 现在为假。

然后运行将#status 设置为错误消息的行。

【讨论】:

  • 这是正确答案。我会写同样的,但 Kaiido 更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 2016-04-11
  • 1970-01-01
相关资源
最近更新 更多