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 相关文章推荐
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 Javascript
js获取class的所有元素
Mar 28 Javascript
JavaScript类属性的访问方式详解
Feb 11 Javascript
ES6中非常实用的新特性介绍
Mar 10 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
js实现canvas图片与img图片的相互转换的示例
Aug 31 Javascript
Vue.js组件通信的几种姿势
Oct 23 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
Aug 22 Javascript
vuex actions传递多参数的处理方法
Sep 18 Javascript
Vue Render函数创建DOM节点代码实例
Jul 08 Javascript
JS实现多功能计算器
Oct 28 Javascript
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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
Python 实现选择排序的算法步骤
2018/04/22 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
详解python-图像处理(映射变换)
2019/03/22 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
golang/python实现归并排序实例代码
2020/08/30 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
幼儿教育感言
2014/02/05 职场文书
超市周年庆活动方案
2014/08/16 职场文书
2015年手术室工作总结
2015/05/11 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android
Hive常用日期格式转换语法
2022/06/25 数据库