【问题标题】:jQuery: focus and blurjQuery:焦点和模糊
【发布时间】:2012-10-30 00:44:17
【问题描述】:

我有一个名为#status 的表单。我想如果您专注于表单输入#statusUpdate,然后应该会出现提交按钮#submitStatus。

我已经这样做了:

$("#statusUpdate").focus(function(){
    $("#submitStatus").show();
});

$("#statusUpdate").blur(function(){
    $("#submitStatus").hide();
});

这很好用,现在我的问题是当#submitStatus 出现时,你想点击它,它会在同一瞬间消失,因为#statusUpdate 焦点丢失(模糊)并因此隐藏它。

如何解决这个问题?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    奇怪的设计 ;) 您可以像这样将hide 包裹在setTimeout

    setTimeout(function() { $("#submitStatus").hide(); }, 100)
    

    或使用 jQuery delay(需要在hide() 中添加一些参数)

    【讨论】:

      【解决方案2】:

      如果我的理解正确,您正在寻找隐藏提交按钮的东西,并且一旦您获得对状态更新的关注,您想要显示提交按钮。您在 sn-p 中所做的是,只要在状态更新框上有焦点,就会显示提交按钮,但是如果您尝试单击它,焦点就会丢失并且立即隐藏提交按钮。这不是预期的结果。上面的答案听起来不错,它会让你有足够的时间点击你需要的按钮。总的 sn-p 将是

      $("#statusUpdate").focus(function(){
          $("#submitStatus").show();
      });
      
      $("#statusUpdate").blur(function(){
          setTimeout(function() { $("#submitStatus").hide(); }, 600);
      });
      

      为用户提供大约 600 毫秒的交互时间是很好的。

      【讨论】:

        猜你喜欢
        • 2012-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多