日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Layui上传文件时choose事件只触发一次的问题(两种解决方案+最终解决方案源码)

發布時間:2024/10/6 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Layui上传文件时choose事件只触发一次的问题(两种解决方案+最终解决方案源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:使用layui的組件實現的文件列表添加和上傳,第一次彈出此頁面,可添加多個文件,點擊上傳,可以成功上傳,但再次彈出此頁面時,添加文件無法觸發choose方法,上傳依然是正常的,話不多說,看解決方法。

說明:我不是前端開發工程師,所以在博客上尋找解決方法,最終成功解決,感謝大家的分享。

1.使用uploadListIns.config.elem.next()[0].value = ‘’

說實話我不知道這個方法的底層是怎么樣的,但是這種方案在我的頁面里是失效的。

initUploadList: function () {var uploadListIns = upload.render({elem: '#id',accept: 'file',exts: 'xlsx|xls|csv',multiple: true,auto: false,bindAction: '#btnId',choose: function (obj) {uploadListIns.config.elem.next()[0].value = '';

2.元素動態添加

原文鏈接 https://www.cnblogs.com/easyou/p/12876615.html 這個方案是可以解決choose只觸發一次的問,但是我的前端頁面按鈕是在上邊,我不知道如何添加到我的頁面位置,這個解決方案使我明白,元素一旦綁定,事件觸發后就無法再次觸發,動態綁定相當于重新初始化,受此啟發,就出現了第三種比較復雜的方案。

//初始化上傳控件var InitUpload = function () {//submitbtngroup 這個是上傳按鈕的父節點 動態添加上傳按鈕 解決上傳一次之后choose方法不執行的bug$("#submitbtngroup").append('<button class="layui-btn layui-btn-normal" lay-submit lay-filter="chooseFile" id="chooseFile">上傳文件</button>');//導入數據按鈕事件var uploadInst = upload.render({ //允許上傳的文件后綴elem: '#chooseFile',url: '/xxxx/xxxx',accept: 'file',done: function (res) {//每次執行之后都刪除上傳按鈕 在前面重新加$("#chooseFile").remove();}});}

3.動態綁定元素

我只貼相關代碼,無關的代碼就不放了。前端form頁面,兩個動態綁定的按鈕(addUploadFile-0,impDataBtn-0)

<!-- 添加上傳文件表單 --> <form class="layui-form" style="display: none ;margin-top: 20px" id="addUploadFileForm" action=""><div class="layui-upload"><button type="button" class="layui-btn" id="addUploadFile-0" style="margin-left:30px"><iclass="layui-icon layui-icon-add-circle"></i>選擇文件</button><div class="layui-upload-list"><table class="layui-table"><thead><tr><th>文件名</th><th>大小</th><th>狀態</th><th>操作</th></tr></thead><tbody id="uploadList"></tbody></table></div><button type="button" class="layui-btn layui-btn-normal " id="impDataBtn-0" style="margin-left:30px"><iclass="layui-icon layui-icon-upload-drag"></i>上傳文件</button><div class="layui-upload-list" style="height:25px;"></div></div> </form>

js腳本也是只貼相關代碼,懂的都懂,是吧 😃

var data = {// 選擇文件按鈕IDaddUploadFileId: 'addUploadFile',// 確認上傳按鈕IDimpDataBtnId: 'impDataBtn',// 上傳初始化次數initUploadListNum: 0 }; var methods = {initUploadList: function () {// 初始化時重新綁定按鈕對象var elemStr = '#' + data.addUploadFileId + '-' + data.initUploadListNum;var impDataBtnStr = '#' + data.impDataBtnId + '-' + data.initUploadListNum;var uploadListIns = upload.render({elem: elemStr,url: '../../uploadFile',accept: 'file',exts: 'xlsx|xls|csv',multiple: true,auto: false,bindAction: impDataBtnStr,choose: function (obj) {// 省略了一些代碼},before: function () {// 點擊上傳后修改綁定對象的ID,使其可以重新初始化data.initUploadListNum += 1;$(elemStr).id = '#' + data.addUploadFileId + '-' + data.initUploadListNum;$(impDataBtnStr).id = '#' + data.impDataBtnId + '-' + data.initUploadListNum;}})} };

主要是動態綁定兩個按鈕元素(elem,bindAction)方法比較麻煩,還是分享以下,可暫時解決問題。

總結

以上是生活随笔為你收集整理的Layui上传文件时choose事件只触发一次的问题(两种解决方案+最终解决方案源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。