当输入框获得焦点时,如何开始setInterval?

4
我在页面正文中有一个输入元素。我创建了一个setInterval方法。现在我想要的是,在我的页面所在的标签具有焦点(即$(window).focus();),并且当鼠标指针位于输入字段内时(即,我已单击输入字段并且它位于输入字段内),setInterval应该启动。它应该持续到输入丢失焦点,即光标不再位于输入内。
到目前为止,我尝试过以下代码但未成功:
$(document).ready(function(){
  $(window).focus(function(){
    if(("input").is(":focus")){
      var aa=setInterval(newFunc, 2000);
      function newFunc(){...........}
    }
  });
});

你可以在 newFunc 函数内添加一个检查,当输入框失去焦点时关闭定时器。 - marzelin
2个回答

2

不,它会在第一次单击输入字段时启动间隔。我想要的是在光标位于输入字段内时运行它。当光标移出即输入失去焦点时,它应该立即停止。 - Vikas Kumar

2

在输入元素的聚焦和失焦处理程序之间的公共作用域中声明变量。

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

希望这能帮到您。

看起来这会有帮助。但是不能使用:focus选择器吗? - Vikas Kumar
这是必要的吗? - jonny
先生,这是我的实际代码:https://dev59.com/0pbfa4cB1Zd3GeqPr1Gk 显然我在这里发布了错误的查询。您能回答这个问题吗? - Vikas Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接