6

我有一个 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);
        }
    }
});

谢谢。如果有必要,我可以为页面上的所有其他文本区域提供相同的 ID。

4

4 回答 4

17

使用 jQuery 的焦点伪选择器

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

或者对于您的代码示例

if ( $('input:focus').length == 0) { ... }
于 2013-01-21T02:37:34.937 回答
6

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

var targetInput = $('#myInput');

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

JSFiddle

于 2013-01-21T02:40:57.450 回答
3

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

if ( $('input:focus, textarea:focus').length === 0 ) {
    // put some code here...
}
于 2013-01-21T02:38:40.860 回答
1

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

if ( $(':input:focus').length ) { ... }
于 2015-08-14T13:44:25.993 回答