解决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实现班级随机点名小应用需求的具体分析
May 12 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
js使用心得分享
Jan 13 Javascript
使用AngularJS实现可伸缩的页面切换的方法
Jun 19 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
Vue组件之全局组件与局部组件的使用详解
Oct 09 Javascript
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
iview的table组件自带的过滤器实现
Jul 12 Javascript
JS实现随机抽取三人
Nov 06 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 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使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
禁止空格提交表单的js代码
2013/11/17 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
房地产销售经理岗位职责
2014/01/01 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
总经理检讨书
2014/09/15 职场文书
公民代理授权委托书
2014/09/24 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android