環境:.net core + layui
場景:上傳文件的時候需要先彈出一個層選擇對應的條件傳到上傳方法里面做邏輯,發現layui.upload上傳一次之后在不刷新頁面的前提下不會執行choose方法了;
問題原理:個人理解是upload.render方法執行一次之后,第二次之后沒有把elem指定的這個元素對象重新生成,而是有選擇性的更新對象的屬性,比如file就應該沒更新,還是上一次的file導致change方法沒觸發;
解決方法:
最簡單的就是把elem指定的這個元素變成動態添加,而不是先在頁面寫死;
示例:
1 //初始化上傳控件 2 var InitUpload = function () { 3 //submitbtngroup 這個是上傳按鈕的父節點 動態添加上傳按鈕 解決上傳一次之后choose方法不執行的bug 4 $("#submitbtngroup").append('<button class="layui-btn layui-btn-normal" lay-submit lay-filter="chooseFile" id="chooseFile">上傳文件</button>'); 5 //導入數據按鈕事件 6 var uploadInst = upload.render({ //允許上傳的文件后綴 7 elem: '#chooseFile' 8 , url: '/xxxx/xxxx' 9 , accept: 'file' //普通文件 10 , exts: 'xlsx|xls' //只允許上傳excel文件 11 , done: function (res) { 12 13 //每次執行之后都刪除上傳按鈕 在前面重新加 14 $("#chooseFile").remove(); 15 } 16 }); 17 }