问问题
814 次
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 回答