2 回答
1
这是因为blur事件在焦点转移到选择元素之前触发。您可以使用演示小提琴中添加的日志语句查看事件序列。
这里一种可能的解决方案是使用下面给出setTimeout的检查focus条件,它将条件的执行延迟几毫秒,在此之前焦点将转移到目标元素
$("#uText").on("blur", function() {
setTimeout(function(){
if ( !$("#uCarrier").is(":focus") ){
$("#uCarrier").stop(true).fadeOut(400);
$($("#uText")).stop(true).show().delay( 400 ).animate({width: "96%"}, 400);
}
}, 20)
});
演示:小提琴
于 2013-08-20T02:57:21.727 回答
1
因此,这是您页面上发生的事情:
- 您选择文本框。
- 选择后,您将
<select>与您的onFocus处理程序一起显示。 - 您单击
<select>,这会导致两件事按以下顺序发生: <input>运行它的处理blur程序。<select>收益集中。
所以 Arun 是对的:您只需执行 setTimeout 等待几毫秒,让选择框获得焦点。:D
祝你的项目好运!
于 2013-08-20T02:58:52.827 回答