jQuery:焦点输入,如果还没有集中

时间:2010-10-02 14:11:43

标签: jquery

我想将输入字段集中在文档的KeyDown事件中,如果它还没有被聚焦的话。 如果已经集中注意力,那么应该没有任何事情发生。如果它还没有聚焦,则删除文本内容,并将按下的键(如果其字符代码在特定范围内)添加。

我目前的代码仅适用于最新的浏览器,甚至不适用于Firefox 3.0 ......

$(document).keydown(function (e) {
    var code = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;

    if (code < 33 || code > 256) {
        return;
    }

    // Check if the text input is focused
    if ($("*:focus").attr("id") == "searchString") {
        // Maybe more to come here ...
    }
    else {
        // Clear content and focus                    
        $("#searchString")
            .val("")
            .focus();
    }
});

1 个答案:

答案 0 :(得分:1)

您可以使用document.activeElement并检查id属性,如下所示:

$(document).keydown(function (e) {
    //e.which is normalized by jQuery already
    if (e.which < 33 || e.which > 256) return;
    if (document.activeElement && document.activeElement.id == "searchString") {
      //do stuff
    }
    else {
        $("#searchString").val("").focus();
    }
});

此外,您可以切换到event.which property后的it's already normalized by jQuery internally