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 相关文章推荐
JavaScript使用prototype定义对象类型
Feb 07 Javascript
javascript cookies操作集合
Apr 12 Javascript
javascript针对DOM的应用分析(三)
Apr 15 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
提升页面加载速度的插件InstantClick
Sep 12 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
May 06 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 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
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
PHP常用技巧汇总
2016/03/04 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
基本DOM节点操作
2017/01/17 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
python画折线图的程序
2018/07/26 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
Python 内存管理机制全面分析
2021/01/16 Python
新学期开学寄语
2014/01/18 职场文书
医药销售求职信范文
2014/02/01 职场文书
新党章的学习心得体会
2014/11/07 职场文书
员工辞职信范文
2015/03/02 职场文书
基层工作经历证明
2015/06/19 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
Redis唯一ID生成器的实现
2022/07/07 Redis