解决Js先触发失去焦点事件再执行点击事件的问题

作者:嗨皮田酱 时间:2024-04-22 12:50:33 

最近在做公司的某个从项目,基本设计和淘宝登陆页类似:

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');
}
});

如此操作后就可以完美解决了,目前未发现任何副作用。

来源:https://blog.csdn.net/zttaiwx/article/details/53389884

标签:Js,焦点,点击
0
投稿

猜你喜欢

  • Django文件上传与下载(FileFlid)

    2023-07-10 11:33:33
  • vue实现全选、反选功能

    2024-04-09 10:58:43
  • 将自己的数据集制作成TFRecord格式教程

    2022-02-01 14:49:37
  • Spring + mybatis + mysql使用事物的几种方法总结

    2024-01-22 02:01:25
  • python截取两个单词之间的内容方法

    2022-06-02 01:48:46
  • JavaScript通过改变文字透明度实现的文字闪烁效果实例

    2024-04-16 09:13:28
  • Python调用高德API实现批量地址转经纬度并写入表格的功能

    2023-12-26 03:22:20
  • Go语言多值替换的HTML模板实例分析

    2024-05-02 16:25:02
  • Pytorch mask-rcnn 实现细节分享

    2021-10-20 01:31:38
  • Python 文件操作实现代码

    2023-07-12 08:30:59
  • Python常见MongoDB数据库操作实例总结

    2023-07-08 08:48:34
  • JavaScript 实现模态对话框 源代码大全

    2023-08-22 20:32:24
  • python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例

    2023-05-31 17:41:29
  • Go语言Zap日志库使用教程

    2024-05-05 09:27:11
  • Python3 导入上级目录中的模块实例

    2023-09-01 02:25:20
  • linux下安装python3和对应的pip环境教程详解

    2023-03-17 09:48:15
  • 浅析PyTorch中nn.Module的使用

    2021-10-29 14:04:53
  • 使用Python实现跳一跳自动跳跃功能

    2023-04-07 01:57:55
  • 详解如何用模块化的方式写vuejs

    2024-04-27 16:08:04
  • Python实现将绝对URL替换成相对URL的方法

    2023-08-28 13:40:08
  • asp之家 网络编程 m.aspxhome.com