在下面的代码中,我想在上述提及的var hasFocus=False;
和<textarea>
的模糊效果上设置500ms后的<input>
。此代码立即变为hasFocus=False
,而无需首次等待500ms。之后,它会按预期工作。
我无法理解为什么它第一次没有按预期运行!
$(function(){
var hasFocus=false;
$("textarea[name='question1'], input[name^=q1_option]").blur(function(event){
setTimeout(function(){
hasFocus=false;
},500);
}).focus(function(){
hasFocus=true;
});
$(document).on('click',function(e){
console.log("focus :" +hasFocus);
if(hasFocus)
{
alert("Working!!"); //Now this does not come up for the first time!
}
})
});
最佳答案
这是因为您的console.log
在触发超时模糊事件之前执行,因此控制台显示了先前的值。将console.log("focus :" +hasFocus);
移到blur
和focus
函数中,以确保一切正常。
演示-Fiddle