检查是否有任何输入元素是焦点

时间:2013-01-21 02:34:52

标签: jquery input focus

我有一个jquery脚本,当按下键盘上的任何键时显示div。我想在脚本中添加一个条件,如果页面上没有其他输入区域(textarea或texfields),则只运行脚本。这样你就可以实际输入页面的其余部分而不显示div。

$(document).on('keydown', function (e) {
    if (!$('#test').is(':visible')) {
        //######## IF (every input is not active....) {
        if (65 <= e.keyCode && e.keyCode <= 90) {
            $(elem).fadeIn();
            $('#textarea').val('');
            $('#textarea').focus();
            $('#textarea').val(temp);
        }
    }
});

感谢。如果有必要,我可以在页面上为每个其他textarea提供相同的ID。

4 个答案:

答案 0 :(得分:17)

使用jQuery focus伪选择器

if ( $('input:focus').length > 0 ) {  return; }

或者代码示例

if ( $('input:focus').length == 0) { ... }

答案 1 :(得分:5)

你可以像这样使用jQuery的.is()document.activeElement

var targetInput = $('#myInput');

if(!targetInput.is(document.activeElement)) {
    alert('Typed while not focused on #myInput!');
}

<强> JSFiddle

答案 2 :(得分:3)

使用jQuery,您所要做的就是搜索当前焦点的输入或textarea元素。

if ( $('input:focus, textarea:focus').length === 0 ) {
    // put some code here...
}

答案 3 :(得分:1)

我建议将其用于任何表单输入

if ( $(':input:focus').length ) { ... }