场景是这样的:点击输入框失去焦点会触发验证方法,点击提交按钮的时候也会触发验证方法,若是用户点击输入框后点击提交按钮就会同时触发失去焦点方法和提交按钮方法,这样就会触发两次验证。事件
我想写成只触发一次验证,在开发过程当中我发现:
在移动端当失去焦点和点击事件同时发生的时候,会先执行失去焦点事件,而后再执行点击事件,也就是说失去焦点事件的执行时间比点击事件快。当我按这个逻辑写好了以后在pc端也按这个逻辑去写结果有问题,由于在PC端失去焦点和点击事件同时发生的时候,只执行失去了焦点事件,点击事件没有执行,因此我在移动端的那些写法放到PC端就行不通了。开发
解决办法:
给按钮设置 mousedown 事件,而后在 mousedown 事件中event.preventDefault()阻止默认事件发生 就能够了。
若是不组止默认事件的话mouseDown会先执行,而后再到失去焦点事件执行。event
ps:若是有说的不对的地方,欢迎交流~sed