【问题标题】:Disable keydown shortcuts if input(s) is focused如果输入有焦点,则禁用 keydown 快捷键
【发布时间】:2011-08-13 12:54:42
【问题描述】:

我的输入很少,您可以使用键码来集中它们。

我正在尝试:当专注于输入时,禁用键码功能,当不专注时,启用。

我试过了:

var hotkeys_function = false;
if (!hotkeys_function ){
    $(document).keydown(function(e) { 
        if (e.keyCode == 71) { 
        $("#input1").fadeIn();
        $("#input1").focus().select();
            var hotkeys_function = true;
        }
    });

}

还有这个:

if ($("#input1").select()) {
    var hotkeys_function = true;
}

但似乎没有任何工作。

【问题讨论】:

    标签: javascript jquery keydown keycode


    【解决方案1】:

    不是$("#input1").select(),而是$("#input1").focus()

    其实不需要变量,你可以动态检查并返回一个输入是否有焦点。

    $(document).keydown(function(event) {
        if($("#input1").is(":focus")) return; //Will fail if already focused. 
    
        if (event.keyCode == 71) { //g 
            $("#input1").fadeIn();
            $("#input1").focus().select();
        }
    });
    

    Working example.

    【讨论】:

    • 在其余代码中还有其他东西可以防止这种情况发生。不过非常感谢。我会检查的。
    • @pimvdb true,但他(也在他的示例中)询问了#input1,无论如何更改匹配集以使用任何输入都是非常简单的。
    【解决方案2】:

    你可以做的就是这样,没有任何其他变量:http://jsfiddle.net/pimvdb/YnVPQ/

    $(document).keydown(function(e) {
        if (e.keyCode == 71) {
            if($("input").is(":focus")) return; // abort if any focused textboxes
    
            $("#input1").fadeIn();
            $("#input1").focus().select();
        }
    });
    

    【讨论】:

    • 它似乎不起作用。我在 $("input") 字段中输入的内容都不起作用。它必须是一些东西,而不是在整个 html 中。似乎在运行时,一个输入被关注。我也尝试了 $("#input1") 但它再次没有聚焦。
    • 很抱歉,它显然阻止了任何文本的输入。请查看我的编辑。
    猜你喜欢
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多