Layui之上傳檔案
阿新 • • 發佈:2018-11-27
最近在做的一個功能裡,需要在某些條件成立的情況下,才允許上傳檔案。
方法一:設定不自動上傳,將上傳事件繫結到另一個按鈕,選擇完檔案後可以根據條件讓上傳按鈕隱藏和顯示
方法二:設定自動上傳,這時就需要使用before方法或choose方法來判斷條件,但是因為upload.js中本來不提供阻止上傳的方式,所以得修改下upload.js的原始碼
找到以下程式碼:
return"choose"===t?l.choose&&l.choose(g):(l.before&&l.before(g),a.ie?a.ie>9?u():c():void u())
將其修改為:
return"choose"===t?l.choose&&l.choose(g):((l.before&&l.before(g))===false?'':a.ie?a.ie>9?u():c():void u())
這樣一來,在before方法裡return false
就能阻止檔案上傳,而return true
或沒有返回值則允許上傳。
動態傳參
upload.render({ elem: '.importSectionBtn', url: '/ocOperatorNew/courseSection/doImport.do', method : "POST", accept: 'file', exts: 'xls|xlsx', data: {}, // courseId:$(".courseId").val(); // 由於courseId並沒有在載入頁面時賦值,而是在當前頁面操作後動態賦值, // 而這裡是載入頁面時就會渲染,所以會導致取到的courseId為空 before: function(obj){ var courseId = $(".courseId").val(); if(courseId == ''){ layer.msg("請儲存課程資訊"); return false; } this.data.courseId = courseId; // 方法:在函式裡手動賦值 }, done: function(res){ layer.msg(res.msg); // 重新整理本頁面 location.reload(); } });