在下面的代码中,我想在上述提及的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);移到blurfocus函数中,以确保一切正常。

演示-Fiddle

09-19 04:54