关于 focus 和 blur 事件
比如,有一个表单,当聚焦其中某一个输入框时显示提交按钮,当失焦的时候,隐藏提交按钮,或者显隐其它操作,这里仅以最简单的为例,我必须承认这种交互的无聊,但是人在江湖身不由己啊。
首先想到的应该是使用 focus 和 blur 事件,但是问题在于就算按钮显示出来了,我也点不到啊,一点就失焦了。。。一些人会想到不用 blur 事件,给 document 绑定 onclick 事件,但是这会带来一些副作用:
- document 上绑的事件太多,累啊;
- 当用户使用 tab 键切换的时候不会触发;
- 当页面被以 iframe 形式嵌入页面的时候,点了输入框,然后点父页面的 document 并不会触发事件;
- …
回头来看,还是 blur 靠谱,但是如何克服问题呢,其实很简单,给 blur 事件添加一个延时,经过各种测试,Opera、Firefox、IE8 最佳时间为 120 ms,IE7、IE6 最佳时间为 130 ms,Chrome 表现怪异,所以综合起来,取 130 ms 比较靠谱。
Demo: http://www.12sui.cn/test/event/focus-blur-100726.html
这篇文章发布于 2010年07月26日,星期一,20:54,归类于 编码。 您可以跟踪这篇文章的评论通过 RSS 2.0 feed。 您可以留下评论,或者从您的站点trackback。
我在想,那个框到底是干什么的,如果没button出现的时候!杯具的交互!