仅当input元素具有焦点时,如何启动setInterval?

时间:2016-04-21 15:41:02

标签: javascript jquery javascript-events

我在页面正文中有一个输入元素。我创建了一个 setInterval 方法。现在我想要的是当我的页面打开的标签有焦点(即$(window).foucs();),当我的鼠标光标在输入字段内时(即我单击输入字段内部并且它在输入内部,setInterval应该开始。它应该继续,直到输入失去焦点,即光标不在输入内。

到目前为止,我已经尝试了这个但是它无效:

$(document).ready(function(){
  $(window).focus(function(){
    if(("input").is(":focus")){
      var aa=setInterval(newFunc, 2000);
      function newFunc(){...........}
    }
  });
});

2 个答案:

答案 0 :(得分:2)

在输入元素的焦点和模糊处理程序之间的公共范围内声明变量。

var aa;
$("input").focus(function(){
    aa = setInterval(newFunc, 2000);
  function newFunc() {
    ...
  }
})
$("input").blur(function(){
    clearInterval(aa);
})

希望有所帮助

答案 1 :(得分:1)

您可以使用:

$("input").on("focus", function () {
    var aa = setInterval(newFunc, 2000);
    function newFunc(){...........}
});

或者在关注时执行此操作,将focus更改为focusout

请参阅:https://api.jquery.com/focus/https://api.jquery.com/focusout/