layui的多图上传功能相当的方便。
html:部分
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">活动图片:</label>
<div class="layui-input-block">
<div class="layui-upload">
<button type="button" class="layui-btn" id="uploadImgsBtn">
多图片上传
</button>
<div class="layui-upload-list" id="showUploadImgs"></div>
</div>
</div>
</div>
</div>
js部分
使用,from、layer、upload插件
var form,layer,upload;
layui.use(['form','layer','upload'],function () {
form = layui.form;
layer = layui.layer;
upload = layui.upload;
form.render();
var files;//选择的文件数组
upload.render({
elem: '#uploadImgsBtn',
url: '/Admin/Activity/insertActivityUploadImg',
multiple: true,
accept: 'images',
auto:false,
number:5,
bindAction:"#insertBtn",
choose:function(obj){
//预读本地文件示例,不支持ie8
files = obj.pushFile();//将选择的图片加到数组中
obj.preview(function(index, file, result){
//index='"+index+"':是传递图片的下标,为了删除确定元素。
var img="" +
"<span class='uploadSpan'>" +
"<img src='"+result+"' index='"+index+"' class='layui-upload-img uploadImg'>" +
"<span class='DelUPImg'>" +
"<icon class='layui-icon layui-icon-delete'></icon>" +
"</span>" +
"</span>"
$('#showUploadImgs').append(img);
});
}
,done: function(res){
//上传完毕
console.log(res.data);
}
});
/*点击删除图片项的按钮*/
$(document).on('click','.DelUPImg',function (e) {
delete files[$(this).prev().attr("index")];//从图片数组中删除元素。根据下标删除
$(this).parent().remove();//在页面上移除显示图片的节点
});
});
注意:
有些博客上写的删除图片只是在页面的节点中移除元素,虽然显示选择图的地方看不到图片,但是实际上upload的内部数据中不会因为节点的移除而自动删除已经选中并且显示出来的的图片。
这就导致了一个问题。当设置了限制图片上传的数量后,且在页面上的节点中删除了元素后再次添加图片想上传的时候,数量就会超出。导致无法上传。原因就是因为页面元素上虽然没有了图片,但是upload插件的内部数据中依旧存在着被删除的图片数据。
解决办法:
配合:delete files(index) 方法才能删除 index:是要删除的图片下标,下标可以根据添加到页面的节点时向标签中添加。即上js代码中的:<img src='"+result+"' index='"+index+"' class='layui-upload-img uploadImg'>
版权声明:本站部分内容由互联网用户自发贡献,文章观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请拨打网站电话或发送邮件至1330763388@qq.com 反馈举报,一经查实,本站将立刻删除。
文章标题:layui 多图上传点击图片删除的实现与注意事项发布于2024-01-16 22:33:46