收藏
回答

input组件blur事件不触发

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug input 客户端 7.0.1 2.5.2

- 当前 Bug 的表现

点击input输入框后,再迅速点击页面其他地方,input不会触发blur事件,调起的键盘不会收起。

实际项目中的情况是:点击了手机号输入框后,又迅速点击了获取手机号的button组件,这时授权界面和键盘都调起来了,但是键盘层级较高,会挡住授权界面的“接受”和“拒绝”按钮,且整个界面无法再进行后续操作(可操作的按钮都被遮挡了)。


- 提供一个最简复现 Demo

见代码片段,从console中看input blur事件和button click事件的触发情况

回答关注问题邀请回答
收藏

7 个回答

  • 来一间
    来一间
    2019-03-15

    我也遇见这个问题了



    2019-03-15
    有用 3
    回复 1
  • 铭锋科技
    铭锋科技
    2019-03-14

    重现了


    2019-03-14
    有用 1
    回复 1
    • 雨落听尘
      雨落听尘
      01-18
      还没解决吗
      01-18
      回复
  • 三毛
    三毛
    05-15

    这个问题还在吗?

    05-15
    有用
    回复
  • 雨落听尘
    雨落听尘
    01-18

    经测试,真机下input上绑定的事件执行顺序为bind:tap -> bindfocus,迅速点击其他绑定有bind:tap的节点时,会优先触发当前节点的tap事件,然后再触发input的blur事件,所以实际触发情况是:tap -> focus -> tap -> blur。这时如果想等input blur事件生效后再做其他操作是不行的。我的处理方式是,在触发其他节点的tap事件时,判断input的focus是否为true,若是,则使用setTimeout延迟300ms,等待blur事件触发,再进行其他操作。若是担心blur事件不触发,可以先将focus置为false,再进行延迟操作。input的focus用变量控制。虽然解决了,但是代码可读性变差了

    01-18
    有用
    回复 2
    • 雨落听尘
      雨落听尘
      01-18
      input聚焦事件不使用bindfocus,而是bindfocus。因为有些ios机型会在键盘弹出后才执行bindfocus事件,键盘弹出又是有动画过渡的,所以此时迅速点击其他节点的tap事件时,input的focus可能还不是true
      01-18
      回复
    • 雨落听尘
      雨落听尘
      01-18回复雨落听尘
      不使用bindfocus,而是bind:tap,写错了.....
      01-18
      回复
  • 吴奕群
    吴奕群
    2019-03-16

    对的,我也是,100%重现,界面没设计的好,点都点不掉

    2019-03-16
    有用
    回复
  • 灵芝
    灵芝
    2019-03-14

    你好,是只有Android有这个问题吗?

    2019-03-14
    有用
    回复 2
    • 2019-03-14

      不是,我是在iOS上复现的,iPhone 6P iOS12.0.1 微信7.0.1

      2019-03-14
      回复
    • 2019-03-15回复

      还有下文没。。

      2019-03-15
      1
      回复
  • ==
    ==
    2019-03-14

    好像。。。这个问题很久之前就说在修复。。。。。

    2019-03-14
    有用
    回复 1
    • 2019-03-14

      扎铁了,老心

      2019-03-14
      回复
登录 后发表内容