解决Js先触发失去焦点事件再执行点击事件的问题


Posted in Javascript onAugust 30, 2018

最近在做公司的某个从项目,基本设计和淘宝登陆页类似:

1)文本框内容为空是,文本框右侧无清除按钮,当有内容时立即显示清除按钮;

2)当文本框失去焦点时,清除按钮消失,获取焦点时若文本框内有内容,则显示清除按钮,否则不显示;

3)文本框再有内容且获取焦点的情况下,点击清除按钮,文本框内容置空,且清除按钮消失。

随后想了想,感觉是个很简单的需求,只要结合使用keyup和blur以及click时间就可以解决了,然而,结果却不是我想要的,代码如下:

html代码:

<div class="input-group">
 <input type="text" id="mobile" class="form-control" placeholder="请输入手机号" autocomplete="off" />
 <div class="input-group-addon icon-clear"></div>
</div>

js代码:

//绑定监听手机号文本框内容按钮事件
$('#mobile').keyup(function() {
 var clearBtn = $(this).parent().find('.icon-clear');
 if($(this).val() == '') { clearBtn.hide(); } 
 else { clearBtn.css('display', 'table-cell'); }
});
//手机号输入框失去焦点,去除清除按钮;获取焦点时,若有值则显示清除按钮
$('#mobile').blur(function() {
 $('#mobile').parent().find('.icon-clear').hide();
}).focus(function(){
 if($(this).val() != ''){
  $(this).parent().find('.icon-clear').css('display', 'table-cell');
 }
});
//清除文本框内容事件
$('.icon-clear').click(function() {
 $(this).parent().find('input').val('');
 $(this).hide();
});

这样看着像是什么问题都没有的样子,其实不然,运行之后发现,在文本框中输入内容后文本框获取焦点,这个时候我想要去点击清除按钮来清除刚才我写的东西,发现,文本框内容没有置空,清除按钮却先消失了,很纳闷啊。

后来经查阅发现,是先执行的失去焦点事件,那么如何去解决呢?

而后,我在失去焦点事件中对其中的方法进行了延迟处理,如下所示:

//验证码输入框失去焦点,去除清除按钮;获取焦点时,若有值则显示清除按钮
$('#auth_code').blur(function() {
 setTimeout(function() { //进行延时处理,时间单位为千分之一秒
  $('#auth_code').parent().find('.icon-clear').hide();
 }, 100)
}).focus(function(){
 if($(this).val() != ''){
  $(this).parent().find('.icon-clear').css('display', 'table-cell');
 }
});

如此操作后就可以完美解决了,目前未发现任何副作用。

以上这篇解决Js先触发失去焦点事件再执行点击事件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery学习笔记 获取jQuery对象
Sep 19 Javascript
javascript中的变量作用域以及变量提升详细介绍
Oct 24 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
Feb 17 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
Apr 29 jQuery
js字符串与Unicode编码互相转换
May 17 Javascript
Bootstrap Table使用整理(一)
Jun 09 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 Javascript
ES6 系列之 Generator 的自动执行的方法示例
Oct 19 Javascript
js实现简易计算器功能
Oct 18 Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 #Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 #Javascript
在Vue methods中调用filters里的过滤器实例
Aug 30 #Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 #Javascript
对vue中methods互相调用的方法详解
Aug 30 #Javascript
原生JS+HTML5实现的可调节写字板功能示例
Aug 30 #Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
Aug 30 #Javascript
You might like
php基础知识:函数基础知识
2006/12/13 PHP
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
取得父标签
2006/11/14 Javascript
js玩一玩WSH吧
2007/02/23 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
python PIL模块的基本使用
2020/09/29 Python
加拿大时装零售商:Influence U
2018/12/22 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
应聘自荐书
2013/10/08 职场文书
商务英语专业自荐信
2013/10/14 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
违反交通法规检讨书
2014/09/10 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
办公室主任个人总结
2015/02/28 职场文书