多个输入框(input或textarea)的bindblur事件互相串扰。

发布于 6 年前作者 juan6711041 次浏览最后编辑 6 年前来自 ask

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

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

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

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

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

iphone 6

7 回复
songna
songna1 楼6 年前

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

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

qianjun
qianjun2 楼6 年前

换成 bindinput 可以

zhengjing
zhengjing3 楼6 年前

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

qlai
qlai4 楼6 年前

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

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

caichao
caichao5 楼6 年前

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

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

xia75
xia756 楼6 年前

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

taoqin
taoqin7 楼4 年前

换成逐个绑定吧