如何在文本控件具有焦点的情况下激活setInterval()

How to activate setInterval() incase a text control has the focus

本文关键字:情况下 激活 setInterval 焦点 文本 控件      更新时间:2023-09-26

实际上,我有一个关于这一点的更新查询。

我有这样的smth:

$(document).ready(function() {
setInterval(doSmth, 10000);
 function doSmth() {
        var result = document.getElementById("fooText").value;
        if (result != "") {            
                    doSmthElse(result);
                }
            });
        }
    }
});

我需要激活间隔,即每10秒触发一次,以防只有文本控件具有焦点,否则什么都不做!!

您的代码是:

$(document).ready(function() {
setInterval(function(){
    var result = $("#fooText").val();
    if (result != "") {            
        // if
    } else {
        // else
    }
}, 10000);

您可以设置字段聚焦的间隔,并在模糊时清除:

var interval;
$(field).focus(function() {
   interval = setInterval(doMsth, 10000);
});
$(field).blur(function() {
    clearInterval(interval);
});

interval变量必须是全局的)

您可以通过两种方式实现这一点,

  1. 让计时器运行并在函数内部检查activeElement == <text input>是否存在,然后执行其余的函数else返回。

    $(document).ready(function() {
       setInterval(doSmth, 5000);
       function doSmth() {
          var resultEl = document.getElementById("fooText");
          if (document.activeElement.id != resultEl.id) { return false; }
          if (resultEl.value != "") {            
            doSmthElse(resultEl.value);
          }           
        }
       function doSmthElse(result) { alert(result);}     
    });
    

演示

  1. 将计时器设置在文本框的焦点上,并删除输入框的模糊计时器。

    $('#fooText').focus ( function () {
    timer = setInterval(function() {
        var textVal = $('#fooText').val();
        if (textVal != '') {
            doSmthElse(textVal );
        }
       }, 5000);        
    });
    $('#fooText').blur (function () {
       if (timer != '') clearInterval(timer);
    });
    

此处演示