javascript - 单击时如何告诉 onBlur 不要隐藏提交按钮?

标签 javascript jquery

我的模糊事件隐藏了提交按钮;但这样做似乎取消了提交事件。我只想在未单击提交本身时隐藏。我如何确定焦点是由于提交而丢失,还是只是在其他地方徘徊?

<form action="" method="post">
    <textarea id="message" name="message"></textarea>
    <input type="submit" id="share" value="Share">
</form>
...

$('textarea').blur(function(){ 
     $('#share').hide() 
})
$('textarea').focus(function(){ 
     $('#share').show() 
})

设置超时以允许在返回模糊之前触发提交事件对我来说似乎有点老套。我们不能做得更好吗?我可以告诉模糊不要阻止其他事件吗?或在 dom 中搜索待处理的提交事件?还是……?


解决方案

今天的内容基于勾选的答案,但更简单。使用 jquery 的“fadeOut”例程来

  1. 将提交按钮的隐藏状态延迟到提交事件触发之后,并且
  2. 让用户感觉他们的提交正在被处理

.

$('textarea').blur(function(){ 
     $('#share').fadeOut() 
})
$('textarea').focus(function(){ 
     $('#share').fadeIn() 
})

这是间接的,并不是我真正想要的,但很明显,直接操作事件队列——比如写 onBlur 说“如果他们没有点击提交,那么隐藏提交按钮”——可能不是技术上可行。

最佳答案

这是一个选项,虽然使用 jQuery 有点老套 .queue().clearQueue()设置动画队列并在任何事情发生之前立即清除它:

   $(function() {
     $("#message").blur(function() {
       $("#share").delay(100).fadeOut();
     });
     $("#share").click(function() {
       $(this).clearQueue();
     });
   });

注意:需要 jQuery 1.4+

关于javascript - 单击时如何告诉 onBlur 不要隐藏提交按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2197003/

相关文章:

javascript - Isotope Jquery 插件布局问题

javascript - 覆盖元素是否总是需要位于 HTML 正文的末尾?

javascript - 使用 jquery-validation 验证焦点上的日期字段

javascript - 如何将 vue 示例导入到独立的 html 文件中?

javascript - jquery ui 中的位置()

javascript - 我想沿着特定路径制作对象的动画

Javascript - 在程序设置变量后如何更新变量?

javascript - 根据与对象属性匹配的下拉选项过滤列表

php - Javascript 中是否有 var_dump (PHP) 的等价物?

javascript - 切换按钮不会返回到初始状态 - Javascript