Layui file upload, preview and modification methods
Single file upload
1, HTML
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> <div id="uploadQRcode" class="layui-upload"> <button type="button" class="layui-btn" id="uploadQR"> <i class="layui-icon"></i>上传客服二维码<span style="color: red;font-size: 20px;">*</span> </button> <div class="layui-upload-list"> <img id="qrshow" src="" alt="" class="layui-upload-img" style="height: 100px;width:100px;border:1px solid black;"> </div> <div id="startDiv"> <button type="button" class="layui-btn" id="startUploadQR">开始上传</button> </div> <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传一张图片, 单张图片的大小不超过2MB</div> </div> <input type="text" name="cli_qrcode" id="qrInput" style="display: none;" lay-verify="required"> </blockquote>
2, js part
layui.use(['form', 'element', 'upload'], function () { var form = layui.form; var element = layui.element; var $ = layui.jquery; var upload = layui.upload; //单文件示例 选完文件后不自动上传 var uploadSingle = upload.render({ elem: '#uploadQR' , url: '/web/api/upload/upload?option=4' , accept: 'images' // 允许上传的文件类型 , size: 2048 // 最大允许上传的文件大小 单位 KB , auto: false , bindAction: '#startUploadQR' , choose: function (obj) { //预读本地文件示例,不支持ie8 obj.preview(function (index, file, result) { $('#qrshow').attr('src', result); //图片链接(base64) }); } , done: function (res, index, upload) { if (res.code == 0) { //上传成功 $("#qrInput").val(res.data[0].fp_relative); var startDiv = $('#startDiv'); startDiv.html('<span style="color: #5FB878;">上传成功</span>'); } else { this.error(index, upload); } } , error: function (index, upload) { //演示失败状态,并实现重传 var startDiv = $('#startDiv'); startDiv.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>'); startDiv.find('.demo-reload').on('click', function () { uploadSingle.upload(); }); } }); });
Multiple picture upload
1, HTML
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> <div id="uploadImg" class="layui-upload"> <button type="button" class="layui-btn" id="upload"> <i class="layui-icon"></i>上传商铺图片<span style="color: red;font-size: 20px;">*</span> </button> <div class="layui-upload-list"> <table class="layui-table" style="text-align: center;"> <thead> <tr> <th style="text-align: center;">图片预览</th> <th style="text-align: center;">大小</th> <th style="text-align: center;">状态</th> <th style="text-align: center;">操作</th> </tr> </thead> <tbody id="imgList"></tbody> </table> </div> <button type="button" class="layui-btn" id="startUpload">开始上传</button> <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传六张图片, 单张图片的大小不超过5MB, 长宽比例推荐1.5:1, 推荐上传图片长675px,宽450px </div> </div> <input type="text" name="face_img" id="imgInput" style="display: none;" lay-verify="required"> </blockquote>
2, js part
layui.use(['table', 'form', 'element', 'upload'], function () { var table = layui.table; var form = layui.form; var element = layui.element; var $ = layui.jquery; var upload = layui.upload; //多文件列表示例 var demoListView = $('#imgList'); var totalArray = new Array(); var uploadInst = upload.render({ elem: '#upload' //绑定元素 , url: '/web/api/upload/upload?option=3' //上传接口 , accept: 'images' // 允许上传的文件类型 // , acceptMime: 'image/jpg,image/png' // (只支持jpg和png格式,多个用逗号隔开), , size: 5120 // 最大允许上传的文件大小 单位 KB , auto: false //选择文件后不自动上传 , bindAction: '#startUpload' //指向一个按钮触发上传 , multiple: true // 开启多文件上传 , number: 6 // 同时上传文件的最大个数 , choose: function (obj) { var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列 var arr = Object.keys(files); totalArray = totalArray.concat(arr); // 检查上传文件的个数 if (totalArray.length <= 6) { //读取本地文件 obj.preview(function (index, file, result) { var tr = $(['<tr id="upload-' + index + '">' , '<td><img src="' + result + '" alt="' + file.name + '" class="layui-upload-img" style="height: 66px;width:100px;"></td>' , '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>' , '<td>等待上传</td>' , '<td>' , '<button class="layui-btn demo-reload layui-hide">重传</button>' , '<button class="layui-btn layui-btn-danger demo-delete">删除</button>' , '</td>' , '</tr>'].join('')); //单个重传 tr.find('.demo-reload').on('click', function () { obj.upload(index, file); }); //删除 tr.find('.demo-delete').on('click', function () { delete files[index]; //删除对应的文件 tr.remove(); uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选 }); demoListView.append(tr); }); } else { // 超出上传最大文件 layer.msg("上传文件最大不超过6个") } } , done: function (res, index, upload) { console.log("res", res); if (res.code == 0) { //上传成功 // 上传成功后将图片路径拼接到input中,多个路径用","分割 var inputVal = document.getElementById("imgInput").value; var valData = ""; if (inputVal) { valData = inputVal + "," + res.data[0].fp_relative; } else { valData = res.data[0].fp_relative; } document.getElementById("imgInput").value = valData; var tr = demoListView.find('tr#upload-' + index) , tds = tr.children(); tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>'); tds.eq(3).html(''); //清空操作 return delete this.files[index]; //删除文件队列已经上传成功的文件 } this.error(index, upload); } , error: function (index, upload) { var tr = demoListView.find('tr#upload-' + index) , tds = tr.children(); tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>'); tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传 } }); });
Add page
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>添加商铺</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="{{static_url('layui/css/layui.css')}}" media="all"> </head> <body> <div style="margin-top: 30px;"> <form class="layui-form layui-form-pane"> <div> <div class="layui-col-xs8 layui-col-xs-offset2"> <div> <label>商铺名称<span style="color: red;font-size: 20px;">*</span></label> <div> <input type="text" lay-verify="required" name="name" autocomplete="off"> </div> </div> </div> </div> <div> <div class="layui-col-xs8 layui-col-xs-offset2"> <div> <label>商铺编号</label> <div> <input type="text" name="code" autocomplete="off"> </div> </div> </div> </div> <div> <div class="layui-col-xs8 layui-col-xs-offset2"> <div> <label>详细地址<span style="color: red;font-size: 20px;">*</span></label> <div> <input type="text" name="address" required lay-verify="required" autocomplete="off" class="layui-input"> </div> </div> </div> </div> <div> <div class="layui-col-xs8 layui-col-xs-offset2"> <div> <label>联系方式<span style="color: red;font-size: 20px;">*</span></label> <div> <input type="text" name="contact" required lay-verify="required|phone" autocomplete="off" class="layui-input"> </div> </div> </div> </div> <div> <div class="layui-col-xs8 layui-col-xs-offset2"> <div> <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> <div id="uploadQRcode"> <button type="button" id="uploadQR"> <i></i>上传客服二维码<span style="color: red;font-size: 20px;">*</span> </button> <div> <img id="qrshow" src="" alt="" style="height: 100px;width:100px;border:1px solid black;"> </div> <div id="startDiv"> <button type="button" id="startUploadQR">开始上传</button> </div> <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传一张图片, 单张图片的大小不超过2MB</div> </div> <input type="text" name="cli_qrcode" id="qrInput" style="display: none;" lay-verify="required"> </blockquote> </div> </div> </div> <div> <div class="layui-col-xs8 layui-col-xs-offset2"> <div> <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> <div id="uploadImg"> <button type="button" id="upload"> <i></i>上传商铺图片<span style="color: red;font-size: 20px;">*</span> </button> <div> <table style="text-align: center;"> <thead> <tr> <th style="text-align: center;">图片预览</th> <th style="text-align: center;">大小</th> <th style="text-align: center;">状态</th> <th style="text-align: center;">操作</th> </tr> </thead> <tbody id="imgList"></tbody> </table> </div> <button type="button" id="startUpload">开始上传</button> <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传六张图片, 单张图片的大小不超过5MB, 长宽比例推荐1.5:1, 推荐上传图片长675px,宽450px </div> </div> <input type="text" name="face_img" id="imgInput" style="display: none;" lay-verify="required"> </blockquote> </div> </div> </div> <div> <div class="layui-col-xs8 layui-col-xs-offset2" style="margin-top: 30px;"> <div> <button class="layui-btn layui-btn-fluid" lay-submit="" lay-filter="addObject">确认保存</button> </div> </div> </div> </form> </div> <script src="{{static_url('layui/layui.js')}}" charset="utf-8"></script> <script> layui.use(['table', 'form', 'element', 'upload'], function () { var table = layui.table; var form = layui.form; var element = layui.element; var $ = layui.jquery; var upload = layui.upload; //单文件示例 选完文件后不自动上传 var uploadSingle = upload.render({ elem: '#uploadQR' , url: '/web/api/upload/upload?option=4' , accept: 'images' // 允许上传的文件类型 , size: 2048 // 最大允许上传的文件大小 单位 KB , auto: false , bindAction: '#startUploadQR' , choose: function (obj) { //预读本地文件示例,不支持ie8 obj.preview(function (index, file, result) { $('#qrshow').attr('src', result); //图片链接(base64) }); } , done: function (res, index, upload) { if (res.code == 0) { //上传成功 $("#qrInput").val(res.data[0].fp_relative); var startDiv = $('#startDiv'); startDiv.html('<span style="color: #5FB878;">上传成功</span>'); } else { this.error(index, upload); } } , error: function (index, upload) { //演示失败状态,并实现重传 var startDiv = $('#startDiv'); startDiv.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>'); startDiv.find('.demo-reload').on('click', function () { uploadSingle.upload(); }); } }); //多文件列表示例 var demoListView = $('#imgList'); var totalArray = new Array(); var uploadInst = upload.render({ elem: '#upload' //绑定元素 , url: '/web/api/upload/upload?option=3' //上传接口 , accept: 'images' // 允许上传的文件类型 // , acceptMime: 'image/jpg,image/png' // (只支持jpg和png格式,多个用逗号隔开), , size: 5120 // 最大允许上传的文件大小 单位 KB , auto: false //选择文件后不自动上传 , bindAction: '#startUpload' //指向一个按钮触发上传 , multiple: true // 开启多文件上传 , number: 6 // 同时上传文件的最大个数 , choose: function (obj) { var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列 var arr = Object.keys(files); totalArray = totalArray.concat(arr); // 检查上传文件的个数 if (totalArray.length <= 6) { //读取本地文件 obj.preview(function (index, file, result) { var tr = $(['<tr id="upload-' + index + '">' , '<td><img src="' + result + '" alt="' + file.name + '" style="height: 66px;width:100px;"></td>' , '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>' , '<td>等待上传</td>' , '<td>' , '<button class="layui-btn demo-reload layui-hide">重传</button>' , '<button class="layui-btn layui-btn-danger demo-delete">删除</button>' , '</td>' , '</tr>'].join('')); //单个重传 tr.find('.demo-reload').on('click', function () { obj.upload(index, file); }); //删除 tr.find('.demo-delete').on('click', function () { delete files[index]; //删除对应的文件 tr.remove(); uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选 }); demoListView.append(tr); }); } else { // 超出上传最大文件 layer.msg("上传文件最大不超过6个") } } , done: function (res, index, upload) { console.log("res", res); if (res.code == 0) { //上传成功 // 上传成功后将图片路径拼接到input中,多个路径用","分割 var inputVal = document.getElementById("imgInput").value; var valData = ""; if (inputVal) { valData = inputVal + "," + res.data[0].fp_relative; } else { valData = res.data[0].fp_relative; } document.getElementById("imgInput").value = valData; var tr = demoListView.find('tr#upload-' + index) , tds = tr.children(); tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>'); tds.eq(3).html(''); //清空操作 return delete this.files[index]; //删除文件队列已经上传成功的文件 } this.error(index, upload); } , error: function (index, upload) { var tr = demoListView.find('tr#upload-' + index) , tds = tr.children(); tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>'); tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传 } }); form.on("submit(addObject)", function (data) { $.ajax({ url: "/web/api/seller/add", type: "post", data: data.field, dataType: "json", success: function (response) { if (response["code"] == 0) { layer.msg("添加成功", { icon: 1, time: 2500 // 默认三秒 }, function () { // 关闭回调,关闭层刷新页面 var index = parent.layer.getFrameIndex(window.name); // 先得到当前iframe层的索引 parent.layer.close(index); }); } else { layer.msg(response["msg"], { icon: 1, time: 1500 // 1.5秒,默认三秒 }); } return false; }, error: function (response) { layer.msg(response["msg"], { icon: 1, time: 1500 // 1.5秒,默认三秒 }); } }); return false; // 关闭表单提交 }); }); </script> </body> </html>
Edit page
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>编辑商铺</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="{{static_url('layui/css/layui.css')}}" media="all"> </head> <body> <div style="margin-top: 30px;"> <form class="layui-form layui-form-pane" lay-filter="updateForm"> <input type="text" name="seller_id" lay-verify="required" style="display: none;"> <div> <div class="layui-col-xs10 layui-col-xs-offset1"> <div> <label>商铺名称</label> <div> <input type="text" lay-verify="required" name="name" autocomplete="off"> </div> </div> </div> </div> <div> <div class="layui-col-xs10 layui-col-xs-offset1"> <div> <label>商铺编号</label> <div> <input type="text" name="code" autocomplete="off"> </div> </div> </div> </div> <div> <div class="layui-col-xs10 layui-col-xs-offset1"> <div> <label>详细地址</label> <div> <input type="text" name="address" required lay-verify="required" autocomplete="off" class="layui-input"> </div> </div> </div> </div> <div> <div class="layui-col-xs10 layui-col-xs-offset1"> <div> <label>联系方式</label> <div> <input type="text" name="contact" required lay-verify="required|phone" autocomplete="off" class="layui-input"> </div> </div> </div> </div> <div> <div class="layui-col-xs10 layui-col-xs-offset1"> <div> <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> <div id="uploadQRcode"> <div> <img id="qrshow" src="" alt="" style="height: 100px;width:100px;border:1px solid black;"> </div> <div> <div> <button type="button" class="layui-btn layui-btn-sm" id="uploadQR"> <i></i>修改客服二维码 </button> </div> <div id="startDiv"> <button type="button" class="layui-btn layui-hide layui-btn-sm" id="startUploadQR" style="margin-left: 30px;">开始上传 </button> </div> </div> <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传一张图片, 单张图片的大小不超过2MB</div> </div> <input type="text" name="old_cli_qrcode" style="display: none;"> <input type="text" name="cli_qrcode" id="qrInput" lay-verify="required" style="display: none;"> </blockquote> </div> </div> </div> <div> <div class="layui-col-xs10 layui-col-xs-offset1"> <div> <div id="uploadImg"> <div> <table style="text-align: center;"> <thead> <tr> <th style="text-align: center;">图片预览</th> <th style="text-align: center;">状态</th> <th style="text-align: center;">操作</th> </tr> </thead> <tbody id="imgList"></tbody> </table> </div> <div> <div> <button type="button" class="layui-btn layui-btn-sm" id="upload"> <i></i>添加商铺图片 </button> </div> <div class="layui-col-xs3 layui-col-xs-offset5"> <button type="button" class="layui-btn layui-btn-fluid layui-btn-sm" id="startUpload"> 开始上传 </button> </div> </div> <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传六张图片, 单张图片的大小不超过5MB, 长宽比例推荐1.5:1, 推荐上传图片长675px,宽450px </div> </div> <input type="text" name="old_face_img" style="display: none;"> <input type="text" name="face_img" id="imgInput" lay-verify="required" style="display: none;"> </div> </div> </div> <div> <div class="layui-col-xs10 layui-col-xs-offset1" style="margin-top: 30px;"> <div> <button class="layui-btn layui-btn-fluid" lay-submit="" lay-filter="addObject">确认保存</button> </div> </div> </div> </form> </div> <script src="{{static_url('layui/layui.js')}}" charset="utf-8"></script> <!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 --> <script> layui.use(['form', 'element', 'jquery', 'upload'], function () { var form = layui.form; var element = layui.element; var $ = layui.jquery; var upload = layui.upload; //单文件示例 选完文件后不自动上传 var uploadSingle = upload.render({ elem: '#uploadQR' , url: '/web/api/upload/upload?option=4' , accept: 'images' // 允许上传的文件类型 , size: 2048 // 最大允许上传的文件大小 单位 KB , auto: false , bindAction: '#startUploadQR' , choose: function (obj) { //预读本地文件示例,不支持ie8 obj.preview(function (index, file, result) { $('#qrshow').attr('src', result); //图片链接(base64) }); } , done: function (res, index, upload) { if (res.code == 0) { //上传成功 $("#qrInput").val(res.data[0].fp_relative); $("#uploadQR").addClass("layui-hide"); var startDiv = $('#startDiv'); startDiv.html('<span style="color: #5FB878;font-size: 17px;">修改成功</span>'); } else { this.error(index, upload); } } , error: function (index, upload) { //演示失败状态,并实现重传 var startDiv = $('#startDiv'); startDiv.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>'); startDiv.find('.demo-reload').on('click', function () { uploadSingle.upload(); }); } }); //多文件列表示例 var demoListView = $('#imgList'); var totalArray = new Array(); var uploadInst = upload.render({ elem: '#upload' //绑定元素 , url: '/web/api/upload/upload?option=3' //上传接口 , accept: 'images' // 允许上传的文件类型 // , acceptMime: 'image/jpg,image/png' // (只支持jpg和png格式,多个用逗号隔开), , size: 5120 // 最大允许上传的文件大小 单位 KB , auto: false //选择文件后不自动上传 , bindAction: '#startUpload' //指向一个按钮触发上传 , multiple: true // 开启多文件上传 , number: 6 // 同时上传文件的最大个数 , choose: function (obj) { var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列 var totalArray = Object.keys(files); // 检查上传文件的个数 if (totalArray.length < (7 - demoListView.data("choiceTotal"))) { //读取本地文件 obj.preview(function (index, file, result) { var tr = $(['<tr id="upload-' + index + '">' , '<td><img src="' + result + '" alt="' + file.name + '" style="height: 66px;width:100px;"></td>' , '<td>等待上传</td>' , '<td>' , '<button class="layui-btn layui-btn-sm demo-reload layui-hide">重传</button>' , '<button class="layui-btn layui-btn-sm layui-btn-danger demo-delete">删除</button>' , '</td>' , '</tr>'].join('')); //单个重传 tr.find('.demo-reload').on('click', function () { obj.upload(index, file); }); //删除 tr.find('.demo-delete').on('click', function () { delete files[index]; //删除对应的文件 tr.remove(); uploadInst.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选 totalArray.splice(totalArray.indexOf(index), 1); }); demoListView.append(tr); }); } else { // 超出上传最大文件 layer.msg("上传文件最大不超过6个"); totalArray.pop(); } } , done: function (res, index, upload) { if (res.code == 0) { //上传成功 // 上传成功后将图片路径拼接到input中,多个路径用","分割 var inputVal = document.getElementById("imgInput").value; var valData = ""; if (inputVal) { valData = inputVal + "," + res.data[0].fp_relative; } else { valData = res.data[0].fp_relative; } document.getElementById("imgInput").value = valData; var tr = demoListView.find('tr#upload-' + index) , tds = tr.children(); tds.eq(1).html('<span style="color: #5FB878;">上传成功</span>'); tds.eq(2).html(''); //清空操作 return delete this.files[index]; //删除文件队列已经上传成功的文件 } this.error(index, upload); } , error: function (index, upload) { var tr = demoListView.find('tr#upload-' + index) , tds = tr.children(); tds.eq(1).html('<span style="color: #FF5722;">上传失败</span>'); tds.eq(2).find('.demo-reload').removeClass('layui-hide'); //显示重传 } }); // 监听修改客服二维码事件 $("#uploadQR").on("click", function () { $("#startUploadQR").removeClass('layui-hide'); }); // 处理图片的修改 demoListView.on('click', '.edit-btn', function () { var csid = $(this).attr("csid"); var startid = $(this).attr("startid"); var currentIndex = parseInt(csid.split("_")[1]); var $currentTr = $(this).parent().parent(); $(this).addClass("layui-hide"); $("#" + csid).removeClass("layui-hide"); $("#" + startid).removeClass("layui-hide"); var uploadEdit = upload.render({ elem: '#' + csid , url: '/web/api/upload/upload?option=3' , accept: 'images' // 允许上传的文件类型 , size: 2048 // 最大允许上传的文件大小 单位 KB , auto: false , bindAction: '#' + startid , choose: function (obj) { //预读本地文件示例,不支持ie8 obj.preview(function (index, file, result) { $currentTr.children().eq(0).html('<img src="' + result + '" alt="" style="height: 66px;width:100px;">') //图片链接(base64) }); } , done: function (res, index, upload) { if (res.code == 0) { //上传成功 var InputTag = $("#imgInput"); var oldInputStrList = InputTag.val().split(","); oldInputStrList[currentIndex] = res.data[0].fp_relative; var newInputStr = oldInputStrList.join(","); InputTag.val(newInputStr); $currentTr.children().eq(1).text("修改成功"); $currentTr.children().eq(2).html(""); } else { this.error(index, upload); } } , error: function (index, upload) { //演示失败状态,并实现重传 var fileHtml = '<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>'; $currentTr.children().eq(2).html(fileHtml); $currentTr.find('.demo-reload').on('click', function () { uploadEdit.upload(); }); } }); }); // 处理图片的删除 demoListView.on("click", '.delete-btn', function () { var delid = this.id; var currentDelIndex = parseInt(delid.split("_")[1]); var theCurrentTr = $(this).parent().parent(); // 更新表格中当前行后面每一行的序号 // 找到当前行后面的每一行 theCurrentTr.nextAll().each(function () { // each中的this和外面的this不一样了! var oldCsid = $(this).children().eq(2).find(".edit-btn").attr("csid"); var oldStarid = $(this).children().eq(2).find(".edit-btn").attr("startid"); var oldChoiceid = $(this).children().eq(2).find(".choice-btn").attr("id"); var oldUploadid = $(this).children().eq(2).find(".upload-btn").attr("id"); var oldDelid = $(this).children().eq(2).find(".delete-btn").attr("id"); if (oldDelid && oldCsid) { $(this).children().eq(2).find(".edit-btn").attr("csid", oldCsid.split("_")[0] + "_" + (oldCsid.split("_")[1] - 1)); $(this).children().eq(2).find(".edit-btn").attr("startid", oldStarid.split("_")[0] + "_" + (oldStarid.split("_")[1] - 1)); $(this).children().eq(2).find(".choice-btn").attr("id", oldChoiceid.split("_")[0] + "_" + (oldChoiceid.split("_")[1] - 1)); $(this).children().eq(2).find(".upload-btn").attr("id", oldUploadid.split("_")[0] + "_" + (oldUploadid.split("_")[1] - 1)); $(this).children().eq(2).find(".delete-btn").attr("id", oldDelid.split("_")[0] + "_" + (oldDelid.split("_")[1] - 1)); } }); // 找到当前行,删除 theCurrentTr.remove(); // 修改新的input框中的值 var delInputTag = $("#imgInput"); var oldDelInputStrList = delInputTag.val().split(","); oldDelInputStrList.splice(currentDelIndex, 1); var delnewInputStr = oldDelInputStrList.join(","); delInputTag.val(delnewInputStr); // 修改全局可上传文件的总个数 var $currentTotal = demoListView.data("choiceTotal"); demoListView.data("choiceTotal", $currentTotal - 1); }); // 填充管理员详情 $.ajax({ url: "/web/api/seller/detail?seller_id={{seller_id}}", type: "get", dataType: "json", success: function (response) { console.log(response); $("#qrshow").attr("src", response.data.qrcode_url); var faceList = response.data.face_url_list; demoListView.data("choiceTotal", faceList.length); if (faceList) { for (var i = 0; i < faceList.length; i++) { var trEle = document.createElement("tr"); var trHtml = '<td><img src="' + faceList[i] + '" alt="" style="height: 66px;width:100px;"></td>' + '<td>等待修改</td><td><button type="button" class="layui-btn layui-btn-sm edit-btn" csid="choice_' + i + '" startid="startUpload_' + i + '">修改</button><button type="button" class="layui-btn layui-btn-normal layui-btn-sm layui-hide choice-btn" id="choice_' + i + '" style="margin-right: 10px;">选择图片</button><button type="button" class="layui-btn layui-btn-sm layui-hide upload-btn" id="startUpload_' + i + '">上传</button>' + '<button type="button" class="layui-btn layui-btn-sm delete-btn" id="delete_' + i + '">删除</button></td>'; trEle.innerHTML = trHtml; $("#imgList").append(trEle); } } form.val("updateForm", { "seller_id": response.data.id, "name": response.data.name, "code": response.data.code, "address": response.data.address, "contact": response.data.contact, "cli_qrcode": response.data.cli_qrcode, "old_cli_qrcode": response.data.cli_qrcode, "face_img": response.data.face_img, "old_face_img": response.data.face_img }); form.render(); } }); // 绑定提交事件 form.on("submit(addObject)", function (data) { $.ajax({ url: "/web/api/seller/update", type: "post", data: data.field, dataType: "json", success: function (response) { if (response["code"] == 0) { layer.msg("更新成功", { icon: 1, time: 1500 // 1.5秒,默认三秒 }, function () { // 关闭回调,关闭层刷新页面 var index = parent.layer.getFrameIndex(window.name); // 先得到当前iframe层的索引 parent.layer.close(index); }); } else { layer.msg(response["msg"], { icon: 1, time: 1500 // 1.5秒,默认三秒 }); } return false; }, error: function (response) { layer.msg(response["msg"], { icon: 1, time: 1500 // 1.5秒,默认三秒 }); return false; } }); return false; // 关闭表单提交(注意:此处不能省略,此处不能省略,此处不能省略。。。 否则页面刷新有问题) }); }); </script> </body> </html>
For more layui knowledge, please pay attention layui usage tutorial column.
The above is the detailed content of Layui file upload, preview and modification methods. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Layui login page jump setting steps: Add jump code: Add judgment in the login form submit button click event, and jump to the specified page through window.location.href after successful login. Modify the form configuration: add a hidden input field to the form element of lay-filter="login", with the name "redirect" and the value being the target page address.

layui provides a variety of methods for obtaining form data, including directly obtaining all field data of the form, obtaining the value of a single form element, using the formAPI.getVal() method to obtain the specified field value, serializing the form data and using it as an AJAX request parameter, and listening Form submission event gets data.

Adaptive layout can be achieved by using the responsive layout function of the layui framework. The steps include: referencing the layui framework. Define an adaptive layout container and set the layui-container class. Use responsive breakpoints (xs/sm/md/lg) to hide elements under specific breakpoints. Specify element width using the grid system (layui-col-). Create spacing via offset (layui-offset-). Use responsive utilities (layui-invisible/show/block/inline) to control the visibility of elements and how they appear.

The method of using layui to transmit data is as follows: Use Ajax: Create the request object, set the request parameters (URL, method, data), and process the response. Use built-in methods: Simplify data transfer using built-in methods such as $.post, $.get, $.postJSON, or $.getJSON.

The difference between layui and Vue is mainly reflected in functions and concerns. Layui focuses on rapid development of UI elements and provides prefabricated components to simplify page construction; Vue is a full-stack framework that focuses on data binding, component development and state management, and is more suitable for building complex applications. Layui is easy to learn and suitable for quickly building pages; Vue has a steep learning curve but helps build scalable and easy-to-maintain applications. Depending on the project needs and developer skill level, the appropriate framework can be selected.

To run layui, perform the following steps: 1. Import layui script; 2. Initialize layui; 3. Use layui components; 4. Import layui styles (optional); 5. Ensure script compatibility and pay attention to other considerations. With these steps, you can build web applications using the power of layui.

layui is a front-end UI framework that provides a wealth of UI components, tools and functions to help developers quickly build modern, responsive and interactive web applications. Its features include: flexible and lightweight, modular design, rich components, Powerful tools and easy customization. It is widely used in the development of various web applications, including management systems, e-commerce platforms, content management systems, social networks and mobile applications.

layui and vue are front-end frameworks. layui is a lightweight library that provides UI components and tools; vue is a comprehensive framework that provides UI components, state management, data binding, routing and other functions. layui is based on a modular architecture, and vue is based on a componentized architecture. layui has a smaller ecosystem, vue has a large and active ecosystem. The learning curve of layui is low, and the learning curve of vue is steep. Layui is suitable for small projects and rapid development of UI components, while vue is suitable for large projects and scenarios that require rich functions.
