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 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐share.js
Dec 23 Javascript
javascript延时加载之defer测试
Dec 28 Javascript
用jquery统计子菜单的条数示例代码
Oct 18 Javascript
jQuery 中的 DOM 操作
Apr 26 Javascript
JS获取多维数组中相同键的值实现方法示例
Jan 06 Javascript
jQuery实现链接的title快速出现的方法
Feb 20 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 Javascript
10种JavaScript最常见的错误(小结)
Jun 21 Javascript
javaScript中indexOf用法技巧
Nov 26 Javascript
如何基于jQuery实现五角星评分
Sep 02 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
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
浅谈python中get pass用法
2019/03/19 Python
20行python代码实现人脸识别
2019/05/05 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL