var uploadInst = layui.upload.render({ elem: '#test', url: '/upload/', done: function(res) { console.log(res); } })多次执行后,提交时会多次触发提交事件怎么解决
时间: 2024-02-23 20:01:18 浏览: 77
多次注册事件会导致一个事件被触发多次的解决方法
这个问题的解决方案是在每次执行 `layui.upload.render` 方法之前,先销毁之前创建的实例。因为每次执行 `layui.upload.render` 方法都会生成一个新的实例 `uploadInst`,并且每个实例都会绑定上传成功的回调函数 `done`,所以当你上传文件时,会触发每个实例的上传事件,导致多次触发提交事件。
你可以在每次执行 `layui.upload.render` 方法之前,先销毁之前的实例。可以使用 `uploadInst.config.elem.next().find('iframe').remove()` 方法来销毁之前的实例。具体来说,你可以这样做:
```
// 销毁之前的实例
if (uploadInst) {
uploadInst.config.elem.next().find('iframe').remove();
}
// 创建新的实例
uploadInst = layui.upload.render({
elem: '#test',
url: '/upload/',
done: function(res) {
console.log(res);
}
});
```
这样,在每次上传文件之前,都会先销毁之前的实例,保证每次只有一个实例在监听上传事件,避免多次触发提交事件的问题。
阅读全文