我的模糊事件隐藏了提交按钮;但这样做似乎取消了提交事件。我只想在未单击提交本身时隐藏。如何确定焦点是否因提交而丢失,或者仅仅是因为在其他地方徘徊?
<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”例程来
$('textarea').blur(function(){
$('#share').fadeOut()
})
$('textarea').focus(function(){
$('#share').fadeIn()
})
这是间接的,而不是我真正想要的东西,但似乎很明显,直接操纵事件队列 - 比如写onBlur说“如果他们没有点击提交然后隐藏提交按钮” - 也许不是技术上可行。
答案 0 :(得分:1)
如果隐藏“提交”按钮,则提交将取消。
尝试使其完全透明。
编辑:例如:
$('#share').css({ opacity: 0, position: 'absolute' });
答案 1 :(得分:1)
这是一个选项,虽然有点hacky使用jQuery .queue()和.clearQueue()设置动画队列并在发生任何事情之前立即清除它:
$(function() {
$("#message").blur(function() {
$("#share").delay(100).fadeOut();
});
$("#share").click(function() {
$(this).clearQueue();
});
});
注意:需要jQuery 1.4 +