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