我不确定我在俯瞰什么。如果我的设计很糟糕,或者有一种聪明的解决方法。
给定: 1个输入字段 1个隐藏按钮
逻辑: 如果输入字段被聚焦,则显示隐藏按钮。 如果输入字段未聚焦,则按钮将被隐藏。 如果单击该按钮,则会调用某个函数,然后该按钮将被隐藏。
问题在于,当单击按钮时,输入字段在之前就不会聚焦,因此非聚焦侦听器会先触发,而按钮点击侦听器永远不会触发。
这是为什么?为什么两个听众都没有被触发?
当前代码结构:
$(someinputfield).focus(function(){
show button
}
$(someinputfield).focusout(function(){
hide button
}
$(somebutton).click(function(){
deliver();
hide button
}
递送();永远不会被执行!
编辑: 这里是真正的代码:
$("#input1").focus(function(){
$("#submit1").delay(600).queue(function(next){
$(this).css('display', 'block');
next();
});
});
$("#input1").focusout(function(){
$("#submit1").hide();
});
$("#submit1").click(function(){
deliver();
setTimeout(function(){
$(this).hide();
}, 2000);
});
答案 0 :(得分:1)
使用input
代替button
按钮。
这样,当您单击按钮时输入将保持焦点,但不在外面。
.focus()
事件的选择器必须同时包含输入和它的按钮,在下面的示例中,我只选择了所有输入。你需要改变它。
$(function(){
$('input').focus(function(){
$('.button').show();
});
$('input').blur(function(){
$('.button').hide();
});
$('.button').click(function(){
alert("clicked");
});
});
JSFiddle here JSfiddle