首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

浏览器blur事件跟click事件

2012-08-08 
浏览器blur事件和click事件最近做项目又回到Web前端,遇到一个棘手的问题。代码如下:mobile: input idmob

浏览器blur事件和click事件

最近做项目又回到Web前端,遇到一个棘手的问题。

代码如下:

mobile: <input id="mobile" type="text" /><a id="btnSubmit" href="javascript:void(0)">submit</a><script src="jquery.js"></script><script>$('#mobile').blur(function() {    alert('blur');});$('#btnSubmit').click(function() {    alert('click');});</script>

?先点击mobile输入域,让它聚焦,然后再点击submit的时候,会弹出blur,而click不会弹出,可见click事件并不会发生。IE8和FF均是如此,然后实际的项目中需要在用户点击submit时候,触发click事件,弹出对话框。

?

百般无奈,只得寻求workaround

1. 把click换成mousedown,click弹出了,但blur发生了两次,最后一次blur的结果把submit的结果给冲掉了(需求是:用户点击submit的时候,验证mobile不能为空,且报错,而未点击submit只是mobile域失去焦点,mobile为空不报错)。 弄了半天用什么时间戳表示用户点击和浏览器触发等,都很麻烦,后来同事想到个办法:

mobile: <input id="mobile" type="text" /><a id="btnSubmit" href="javascript:void(0)">submit</a><script src="jquery.js"></script><script>$('#mobile').blur(function(e) {    alert('blur');});$('#btnSubmit').mousedown(function(e) {    setTimeout(function() {alert('click');},100);});</script>

?这样,mousedown事件就一定在blur事件之后执行了,且100毫秒的时间用户是感知不到的。厉害!

热点排行