解决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 each函数的链式调用
Jul 22 Javascript
ASP Json Parser修正版
Dec 06 Javascript
Jquery颜色选择器ColorPicker实现代码
Nov 14 Javascript
兼容IE和FF的图片上传前预览js代码
May 28 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
JavaScript数组常用操作技巧汇总
Nov 17 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
Apr 26 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
Jan 07 Javascript
基于ts的动态接口数据配置的详解
Dec 18 Javascript
原生JavaScript实现的无缝滚动功能详解
Jan 17 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 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
网站当前的在线人数
2006/10/09 PHP
一个简单的PHP&amp;MYSQL留言板源码
2020/07/19 PHP
实用函数7
2007/11/08 PHP
PHP无限分类(树形类)
2013/09/28 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
举例讲解Python中装饰器的用法
2015/04/27 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
Python接收手机短信的代码整理
2020/08/02 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
党员个人对照检查材料
2014/10/01 职场文书
购房协议书范本
2014/10/02 职场文书
财政局个人年终总结
2015/03/03 职场文书
公务员处分决定书
2015/06/25 职场文书
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB