多个输入框(input或textarea)的bindblur事件互相串扰。
发布于 5 年前 作者 juan67 10887 次浏览 来自 问答

比如页面里有若干个input、若干个textarea,并且统一绑定了同一个blur事件函数,

只是用各自的data-id传参来区别是哪个输入框的事件。

当在输入框里输入 123 并失去焦点。

此时会先后收到两个事件,e.target.dataset.id不一样,但e.detail.value都是123

每次重启小程序后,都重现此问题

iphone 6

7 回复

那你就试试每个表单绑定自己的事件方法,不要公用。

更何况,你更新data 不要全部更新的吧。

换成 bindinput 可以

bindinput这个如果你去操作value内容的话会有兼容性问题。而且没办法解决的。

换成input事件数据不会错乱。

但是多个输入框仍然有问题,上面的输入框输入123,下面的输入框自动显示123

想用blur或input事件是因为,我的表单value是先加载原来的值,然后手动在上面进行编辑,

在编辑过程中,因为某些需要,要更新 this.data,但会导致表单整个被刷新成最初的值,所以想通过事件在中间过程中实时保存到this.data。

我试了把wxml里所有事件绑定删掉了,按理说data不会被更新了,都会有这个问题

换成逐个绑定吧

回到顶部