解决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 相关文章推荐
ExtJs中简单的登录界面制作方法
Aug 19 Javascript
解析使用JS 清空File控件的路径值
Jul 08 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
js 实现菜单左右滚动显示示例介绍
Nov 21 Javascript
js字符串截取函数substr substring slice使用对比
Nov 27 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
Dec 16 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
Oct 20 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
Feb 14 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
Dec 22 Javascript
layui点击导航栏刷新tab页的示例代码
Aug 14 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/10/09 PHP
2014过年倒计时示例
2014/01/31 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
python获得一个月有多少天的方法
2015/06/04 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
python selenium操作cookie的实现
2020/03/18 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
error和exception有什么区别
2012/10/02 面试题
自我推荐书
2013/12/04 职场文书
大学毕业自我评价
2014/02/02 职场文书
小学生暑假感言
2014/02/06 职场文书
导游个人求职信范文
2014/03/23 职场文书
设计师求职信模板
2014/05/06 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
2015年团支书工作总结
2015/04/03 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL