我才12 ?

关于 focus 和 blur 事件

比如,有一个表单,当聚焦其中某一个输入框时显示提交按钮,当失焦的时候,隐藏提交按钮,或者显隐其它操作,这里仅以最简单的为例,我必须承认这种交互的无聊,但是人在江湖身不由己啊。

首先想到的应该是使用 focus 和 blur 事件,但是问题在于就算按钮显示出来了,我也点不到啊,一点就失焦了。。。一些人会想到不用 blur 事件,给 document 绑定 onclick 事件,但是这会带来一些副作用:

  1. document 上绑的事件太多,累啊;
  2. 当用户使用 tab 键切换的时候不会触发;
  3. 当页面被以 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

一条评论

雁过留声

这位姐姐,你好,你的浏览器版本太低了,为了避免您中毒,请您升级您的浏览器!