jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题


Posted in Javascript onAugust 15, 2016

HTML结构:很简单,就一个input,一个div,能说明问题就OK了;

<input type="text" value="默认值"><br/><br/><div>搜索</div>

想要实现的结果:

1、input框获取焦点时value为“”,失去焦点时value为“默认值”;-----这个很好实现;

2、当在input框中输入要搜素的内容后,点击div搜索,要求控制台打印输出要搜素的内容(当然每个项目的需求不同,这里只是举个例子),而且要求点击后不影响input的focus和blur行为;----这个才是重点

先看看冲突没有解决之前的效果;

$("input").focus(function () { 
this.value = ""; }).blur(function () { 
this.value = "默认值"; });$("div").click(function () { 
var value = $("input").val(); 
console.log(value); });

结果:在input中输入“aaaa”,然后点击div,控制台输出的却是“默认值”,与预想的结果不符;

解决方法一:在blur的回调函数中加一个定时器,延迟blur回调函数的执行时间,这样的话虽然在点击div的时候,input的blur行为先被触发,但是由于加了定时器延迟,所以得等到div的click回调执行完成后才能执行input的blur行为的回调;

$("input").focus(function () { 
this.value = "";}).blur(function () { 
var self=this; 
setTimeout(function(){ 
self.value = "默认值"; 
},300)}); $("div").click(function () {//这部分不变 
var value = $("input").val(); 
console.log(value); });

结果:在input中输入“aaaa”,然后点击div,控制台输出的却是“aaaa”,符合预想的结果;

解决方法二:将div的click事件改成mousedown事件,因为mousedown行为是鼠标点下去的时候就被触发,而click行为是鼠标点下去再抬起的时候才被触发

$("input").focus(function () {//这部分不变 
this.value = "";}).blur(function () { 
this.value = "默认值";}); $("div").mousedown(function () { 
var value = $("input").val(); 
console.log(value); });

结果:在input中输入“aaaa”,然后点击div,控制台输出的却是“aaaa”,符合预想的结果;

以上所述是小编给大家介绍的jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery 模板数据绑定插件的使用方法详解
Jul 08 Javascript
使用百度地图api实现根据地址查询经纬度
Dec 11 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 Javascript
去除html代码里面的script正则方法
May 19 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
JavaScript用JSONP跨域请求数据实例详解
Jan 06 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
功能完善的小程序日历组件的实现
Mar 31 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
Web安全测试之XSS实例讲解
Aug 15 #Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 #Javascript
卸载安装Node.js与npm过程详解
Aug 15 #Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
Aug 15 #Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 #Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
Aug 15 #Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
Aug 15 #Javascript
You might like
PHP4之真OO
2006/10/09 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
python实现web方式logview的方法
2015/08/10 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Django实现文件上传下载功能
2019/10/06 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python获取linux系统信息的三种方法
2020/10/14 Python
python实现登录与注册系统
2020/11/30 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
银行服务感言
2014/03/01 职场文书
求职信怎么写
2014/05/23 职场文书
小学感恩主题班会
2015/08/12 职场文书
2016中秋节问候语
2015/11/11 职场文书