【问题标题】:input :focus not working输入:焦点不起作用
【发布时间】:2013-07-25 08:39:11
【问题描述】:

我想在输入获得焦点时使用 jQuery 触发一个事件。应该很简单。

根据this 文章,if 语句中的简单$('#id').is(':focus') 应该可以工作。但不适合我:http://jsfiddle.net/PaulvdDool/BdG9N/

我也尝试过使用.focushere,但这只会不断触发事件。我可以让它工作,但我认为这不是最好的方法。

谁能给我看灯?

【问题讨论】:

  • 将其更改为 on: if($('#field').on('focus')) { alert('Hello world!'); }

标签: jquery html input focus


【解决方案1】:

如下使用:

$('#field').focus(function(){
    //do your stuff here
});

【讨论】:

    【解决方案2】:

    最好的解决方案是使用focus绑定一个事件处理程序,例如:

    $("#field").focus(function(){
       //function body.
    });
    

    此方法的主要问题是警报会从输入中窃取焦点,然后当您单击输入以在框中键入时再次获得焦点。然后重复这个循环。我假设您的代码会做一些事情而不是引发警报,因此一旦实际代码到位,它就不会重复引发警报。

    【讨论】:

    • @PaulvdDool 为什么不至少支持所有其他正确答案?!
    • @Kevin Bowersox 几乎所有其他答案都说明了我已经尝试过的解决方案(就像我在帖子中所说的那样)。是对您的答案的额外评论带来了解决方案。
    【解决方案3】:

    使用 onfocus 处理程序:{你当然可以使用别名 '.focus()' 只是注意一些自定义的 jquery 构建删除别名事件}

    $('#field').on('focus',function(){
        alert('Hello world!');
    });
    

    但不要在焦点处理程序中使用 alert(),而是使用 console.log()。 Alert() 会在某些浏览器上创建一个循环。

    DEMO

    【讨论】:

      【解决方案4】:

      使用focus 作为函数:

      $('#field').focus(function(){
          alert('Hello world!');
      });
      

      如果您将使用alert,请不要忘记添加$(this).blur();,因为在这种情况下,您会收到无限警报。

      【讨论】:

        猜你喜欢
        • 2017-09-16
        • 1970-01-01
        • 2017-10-04
        • 2019-03-26
        • 2013-04-02
        • 1970-01-01
        • 2011-11-17
        • 2019-04-18
        相关资源
        最近更新 更多