解决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 相关文章推荐
JavaScript 内置对象属性及方法集合
Jul 04 Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
javascript实现链接单选效果的方法
May 13 Javascript
微信WeixinJSBridge API使用实例
May 25 Javascript
JavaScript自定义分页样式
Jan 17 Javascript
JavaScript 函数节流详解及方法总结
Feb 09 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
详解Angular 4 表单快速入门
Jun 05 Javascript
angular中不同的组件间传值与通信的方法
Nov 04 Javascript
详解使用mpvue开发github小程序总结
Jul 25 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
Sep 28 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
一些关于PHP的知识
2006/11/17 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
Python判断Abundant Number的方法
2015/06/15 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
python代码编写计算器小程序
2020/03/30 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
python实现ping命令小程序
2020/12/28 Python
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
升职自荐书范文
2013/11/28 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
合伙经营协议书范本
2014/04/18 职场文书
文明礼仪标语
2014/06/13 职场文书
公司领导班子对照材料
2014/08/18 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
文员岗位职责
2015/02/04 职场文书
三潭印月的导游词
2015/02/12 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
详解nginx进程锁的实现
2021/06/14 Servers
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android
Golang解析JSON对象
2022/04/30 Golang