Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
文地址:https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif
原文作者:Lydia Hallie
譯者:夜盡天明
轉(zhuǎn)發(fā)鏈接:https://mp.weixin.qq.com/s/uPgvp1wULIck2yKAqNLeLQ
HTML基本結(jié)構(gòu): <form class="layui-form" action="" id="feedBackForm"> <div class="layui-form-item"> <!--表單內(nèi)容--> </div> <!--圖片上傳--> <div class="layui-upload feedback-padding"> <button type="button" class="layui-btn" id="selectImg">選擇圖片</button> <input type="text" class="layui-hide" name=""> <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> 預(yù)覽圖: <div id="previewImg" class="layui-clear feedback-overflow"> </div> </blockquote> </div> <div class="layui-form-item"> <div class="feedback-block"> <button id="submitBtn" class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button> </div> </div> </form>
JavaScript基本內(nèi)容: 1、多圖片上傳、預(yù)覽 //多圖片上傳 uploadList = upload.render({ elem: '#selectImg' ,url: "/add.do" ,accept: 'images' ,acceptMime: 'image/*' ,method: 'post' ,multiple: true ,auto: false ,choose: function(obj){ files = obj.pushFile(); //將每次選擇的文件追加到文件隊(duì)列 //圖像預(yù)覽,如果是多文件,會(huì)逐個(gè)添加。(不支持ie8/9) obj.preview(function(index, file, result){ var imgBox = document.createElement("div");//預(yù)覽圖、刪除預(yù)覽圖按鈕容器 var imgDelete = document.createElement("div");//刪除預(yù)覽圖按鈕 var imgobj = new Image(); //創(chuàng)建新img對(duì)象 imgBox.style.float = 'left'; imgBox.style.position = 'relative'; imgDelete.setAttribute('class',"feedback-delete-btn layui-icon layui-icon-close-fill"); imgDelete.setAttribute ('title','刪除'); imgobj.src = result; //指定數(shù)據(jù)源 imgobj['layer-src'] = result; imgobj.alt = file.name; imgobj.className = 'layui-upload-img'; imgobj['layer-index'] = index; imgBox.appendChild(imgobj); imgBox.appendChild(imgDelete); imgDelete.onclick = function () { // 為預(yù)覽圖的刪除按鈕綁定刪除事件 delete files[index]; //刪除對(duì)應(yīng)的文件 document.getElementById("previewImg").removeChild(imgBox);//從預(yù)覽區(qū)域移除 uploadList.config.elem.next()[0].value = ''; //清空 input file 值,以免刪除后出現(xiàn)同名文件不可選 } document.getElementById("previewImg").appendChild(imgBox); //添加到預(yù)覽區(qū)域 //photos 圖片層 layer.photos({//此處目前存在bug 導(dǎo)致單擊后無(wú)法在彈層中打開(kāi)預(yù)覽 下面會(huì)講解如何處理 photos: '#previewImg' ,anim: 0 }); }); } });
2、提交 //監(jiān)聽(tīng)提交 form.on('submit(demo1)', function(data){ var myForm = document.getElementById("feedBackForm"); var formData = new FormData(myForm); //循環(huán) files(第一步choose回調(diào)中儲(chǔ)存的對(duì)象) 逐條插入到formData for (var i in files) { formData.append("files",files[i]);//此處的files為上傳接口參數(shù)名 } $.ajax({ url: "/add.do", type: "POST", data: formData, async: false, contentType: false, processData: false, error: function () { layer.msg('網(wǎng)絡(luò)超時(shí)',{icon:2}); }, success: function (data) { layer.msg('成功',{icon:1}); } }) return false; });
3、步驟一中 layer.photos 重復(fù)調(diào)用,導(dǎo)致彈層預(yù)覽圖無(wú)法正常顯示處理: 修改layer.js源碼 ,點(diǎn)擊事件綁定之前,先用off()進(jìn)行解綁,避免重復(fù)綁定,如下: loop || parent.off('click').on('click', options.img, function(){ var othis = $(this), index = othis.attr('layer-index'); layer.photos($.extend(options, { photos: { start: index, data: data, tab: options.tab }, full: options.full }), true); pushData(); })
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。