textarea 失去焦点(bindblur)响应比按钮点击慢,怎么提交表单
发布于 6 年前 作者 fengna 15920 次浏览 来自 问答

场景:

地址的表单,获取表单内容我用的是bindblur事件,失去焦点后把组件内的值setData.。

如果还在编辑textarea里的内容,就点保存按钮,会先触发保存按钮的点击事件,再触发textarea的失去焦点事件,会造成表单的内容还没有获取到。

请问有什么办法可以解决?

10 回复

我也遇到同样的问题,有办法解决吗?

楼主, 你一定要用户输入完地址后就保存吗,那你这个保存按钮有什么用呢

我在手机上试了,也是点击事件在前,那会测试了(安卓机),你写个input和button试试去呗,哎 你这全靠猜想

我说的bug目前只在开发工具能复现。因为实际场景都是有键盘的,要点保存按钮需要先收起键盘。但是在开发工具可以输入完成后,直接点保存按钮。这时候通过断点就可以知道,按钮的点击事件是快于表单失去焦点事件的响应。

@陈,我的业务逻辑我可以改成点保存的时候再进行取值。但我的问题是解决这两个事件响应速度的问题,因为按照逻辑是失去焦点在前,点击按钮在后。这个Bug只有在textarea上有,input不会,所以应该是小程序组件的问题。实现功能是一方面的需求,但是解决bug才是我想要的,很多问题想回避,后面还是会遇到同样的坑

你知道实际场景有键盘就行,你的业务也不会有影响,没人会把保存按钮做输入框上方,不用纠结它

那为什么input是先触发失去焦点?

你错了,是你点击输入框以外   才使得输入框失去焦点 , 所以点击在前失去焦点在后。

textarea文档里面有说明

https://image.wxopen.club/content_69b2b924-373d-11ea-b918-a0999b08aadb.png

Bug & Tip

  1. bug: 微信版本 6.3.30textarea 在列表渲染时,新增加的 textarea 在自动聚焦时的位置计算错误。

  2. tiptextarea 的 blur 事件会晚于页面上的 tap 事件,如果需要在 button 的点击事件获取 textarea,可以使用 form 的 bindsubmit

使用form的bindsubmit方法

???,你是说键盘拉上来就下不去了吗,还是说你要在用户输入完地址后就保存,能具体说一下你要实现什么功能吗,具体点

回到顶部