表单输入框焦点获取与失去事件不同步问题解决方案

表单输入框焦点获取与失去事件不同步问题解决方案

在程序运行中,input输入框的获取焦点事件触发等级是高于失去焦点事件的
所以我们在另一个元素中写获取焦点,在当前元素中有失去焦点则后者的失去焦点事件会被覆盖
这里我们采取的解决方案为

		//失去焦点事件
       loseFocus() {
        /**
         * 这里使用定时器是因为失去焦点方法被在获取焦点前触发
         * 而JS是过程性语言,在程序运行结束后元素都还没获取到焦点
         * 定时器使方法延后执行 所有元素失去焦点才执行
         * */
        setTimeout(() => {
          let status = true
          //获取所有input元素
          let el = document.querySelectorAll('input')
          for (let i = 0; i < el.length; i++) {
          	//如果元素有选中状态则状态未嫁 则不触发方法
            if (el[i] == document.activeElement) {
              status = false
            }
          }
          if (status) {
          	//方法执行
            document.querySelector('.login-shade').classList.add('blur-inversion')
            document.querySelector('.login-shade').classList.remove('blur')
          }
        }, 100)
      },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值