我的模糊事件隐藏了提交按钮;但这样做似乎取消了提交事件。我只想在未单击提交本身时隐藏。我如何确定焦点是由于提交而丢失,还是只是在其他地方徘徊?
<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 说“如果他们没有点击提交,那么隐藏提交按钮”——可能不是技术上可行。
最佳答案
这是一个选项,虽然使用 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/