如何激活setInterval()使文本控件具有焦点

时间:2012-01-10 22:47:44

标签: javascript

实际上我有一个更新enquery到这一步。

我喜欢这样:

$(document).ready(function() {

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

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

3 个答案:

答案 0 :(得分:1)

您可以设置字段焦点的间隔,并在模糊处清除它:

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

$(field).blur(function() {
    clearInterval(interval);
});

interval var必须是全局的)

答案 1 :(得分:1)

您的代码是:

$(document).ready(function() {

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

答案 2 :(得分:1)

您可以通过两种方式实现此目的,

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

    $(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);}     
    });
    
  2. DEMO此处

    1. 将定时器设置在文本框的焦点上,然后删除输入框的定时器onblur。

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