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 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
js里的prototype使用示例
Nov 19 Javascript
JavaScript内核之基本概念
Oct 21 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
实现局部遮罩与关闭原理及代码
Feb 04 Javascript
javascript常见操作汇总
Sep 03 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
Vue中Axios从远程/后台读取数据
Jan 21 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 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
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PDO::exec讲解
2019/01/28 PHP
js动态创建、删除表格示例代码
2013/08/07 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
Python日期操作学习笔记
2008/10/07 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
大学生个人实习的自我评价
2014/02/15 职场文书
矿泉水广告词
2014/03/20 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
总经理检讨书
2014/09/15 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
临时用工协议书范本
2014/10/29 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
三好学生事迹材料
2014/12/24 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
python playwright 自动等待和断言详解
2021/11/27 Python