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 刷新页面的代码小结 推荐
Apr 02 Javascript
浏览器常用高宽的jquery插件
Feb 24 Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
MultiSelect左右选择控件的设计与实现介绍
Jun 08 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
解决checkbox的attr(checked)一直为undefined问题
Jun 16 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
微信小程序websocket实现即时聊天功能
May 21 Javascript
简述pm2常用命令集合及配置文件说明
May 30 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
Oct 24 Javascript
JS加载解析Markdown文档过程详解
May 19 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 上传功能实例代码
2010/04/13 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
为你总结一些php系统类函数
2015/10/21 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
js 异步处理进度条
2010/04/01 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
Ajax基础知识详解
2017/02/17 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
把pandas转换int型为str型的方法
2019/01/29 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
保安的辞职报告怎么写
2014/01/20 职场文书
物流专业求职信
2014/06/30 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
高温慰问简报
2015/07/21 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python
Python列表的索引与切片
2022/04/07 Python
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS