Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何告诉onBlur在单击时不要隐藏提交按钮?_Javascript_Jquery - Fatal编程技术网

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

Javascript 如何告诉onBlur在单击时不要隐藏提交按钮?,javascript,jquery,Javascript,Jquery,我的模糊事件隐藏提交按钮;但这样做似乎会取消提交事件。我只想在提交本身未被单击时隐藏。我如何确定焦点是因为提交而丢失,还是因为在别处闲逛而丢失 <form action="" method="post"> <textarea id="message" name="message"></textarea> <input type="submit" id="share" value="Share"> </form> ...

我的模糊事件隐藏提交按钮;但这样做似乎会取消提交事件。我只想在提交本身未被单击时隐藏。我如何确定焦点是因为提交而丢失,还是因为在别处闲逛而丢失

<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() 
})

这是间接的,并不是我想要的,但似乎很明显,直接操纵事件队列——比如在模糊上写下“如果他们没有单击提交,则隐藏提交按钮”——在技术上可能是不可能的。

如果隐藏提交按钮,提交将取消

试着让它完全透明

编辑:例如:

$('#share').css({ opacity: 0, position: 'absolute' });

这是一个选项,尽管使用jQuery和设置动画队列并在发生任何事情之前立即清除它有点不方便:

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

注意:需要jQuery 1.4+

好主意;如果它占用的空间也被压缩了,那就更好了。@John Mee:将
高度
宽度
设置为
0
?@Felix:甚至只是高度:“…css('height','0')…css('height','40px'))。不幸的是,在提交等待响应时,这仍然会隐藏它,但越来越近:-)@Slaks:奇怪的是,玩“位置”与隐藏具有相同的行为;提交事件是否因为不在屏幕上而被阻止!?@John:几乎可以肯定不会。你为什么不试试呢?我喜欢这个,而不是我的答案。更简单。这是ba基本上与setTimeOut的解决方案相同;淡出有效地延迟了“display:none”特性,直到提交事件触发之后。我不知道旧的和疲惫的机器,但在我的机器上“延迟”和clearqueue是不必要的:我只是将blur例程更改为|$(“#共享”)。淡出()| |。单击后提交已消失,但我们看到它已淡出,因此不会对“正在发生什么”感到太不舒服。我找不到任何方法直接管理事件队列,因此我将暂时解决此问题。thx。
   $(function() {
     $("#message").blur(function() {
       $("#share").delay(100).fadeOut();
     });
     $("#share").click(function() {
       $(this).clearQueue();
     });
   });