解决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实现连连看游戏(附源码)
Nov 05 Javascript
Javascript浅谈之this
Dec 17 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
jQuery实现为控件添加水印文字效果(附源码)
Dec 02 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
Sep 12 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
jquery仿微信聊天界面
May 06 jQuery
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
微信小程序之判断页面滚动方向的示例代码
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制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
谈谈python中GUI的选择
2018/03/01 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
初中生自我评价
2014/02/01 职场文书
会计人员岗位职责
2014/03/19 职场文书
校庆活动策划方案
2014/06/05 职场文书
个人学习总结范文
2015/02/15 职场文书