jQuery:焦点和模糊

时间:2010-12-12 10:50:18

标签: jquery

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

我做到了:

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

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

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

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

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

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

为用户进行交互提供约600ms的好处。