layui 图片与表单一起提交 + layer.photos图片层预览
HTML基本结构:
<form class="layui-form" action="" id="feedBackForm">
<div class="layui-form-item">
<!--表单内容-->
</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;">
预览图:
<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基本内容:
1、多图片上传、预览
//多图片上传
uploadList = upload.render({
elem: '#selectImg'
,url: "/add.do"
,accept: 'images'
,acceptMime: 'image/*'
,method: 'post'
,multiple: true
,auto: false
,choose: function(obj){
files = obj.pushFile(); //将每次选择的文件追加到文件队列 //图像预览,如果是多文件,会逐个添加。(不支持ie8/9)
obj.preview(function(index, file, result){
var imgBox = document.createElement("div");//预览图、删除预览图按钮容器
var imgDelete = document.createElement("div");//删除预览图按钮
var imgobj = new Image(); //创建新img对象 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; //指定数据源
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 () { // 为预览图的删除按钮绑定删除事件
delete files[index]; //删除对应的文件
document.getElementById("previewImg").removeChild(imgBox);//从预览区域移除
uploadList.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
} document.getElementById("previewImg").appendChild(imgBox); //添加到预览区域 //photos 图片层
layer.photos({//此处目前存在bug 导致单击后无法在弹层中打开预览 下面会讲解如何处理
photos: '#previewImg'
,anim: 0
});
});
}
});
2、提交
//监听提交
form.on('submit(demo1)', function(data){
var myForm = document.getElementById("feedBackForm");
var formData = new FormData(myForm); //循环 files(第一步choose回调中储存的对象) 逐条插入到formData
for (var i in files) {
formData.append("files",files[i]);//此处的files为上传接口参数名
} $.ajax({
url: "/add.do",
type: "POST",
data: formData,
async: false,
contentType: false,
processData: false,
error: function () {
layer.msg('网络超时',{icon:2});
},
success: function (data) {
layer.msg('成功',{icon:1});
}
})
return false;
});
3、步骤一中 layer.photos 重复调用,导致弹层预览图无法正常显示处理: 修改layer.js源码 ,点击事件绑定之前,先用off()进行解绑,避免重复绑定,如下:
    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();
    })
layui 图片与表单一起提交 + layer.photos图片层预览的更多相关文章
- Springboot+Vue实现将图片和表单一起提交到后端,同时将图片地址保存到数据库、再次将存储的图片展示到前端vue页面
		文章目录 1.实现的效果 2.Vue前端 3.图片上传 4.字段变量根据自己的字段名自行设置(这里不给出了,哈哈哈) 5.method方法 5.1.图片显示在选择框中,同时返回后端存储的地址 5.2查 ... 
- el-upload上传文件和表单一起提交+后端接收代码
		目录 一.前言 二.前端页面展示 三.表单代码 四.Data部分 五.JS方法 六.后端接收方式 七.总结 一.前言 我们在做前端时,会遇到这样的需求,上传Excel文件,并且还要和填写的表单数据,一 ... 
- layui文件单文件和多文件的上传、预览以及删除和修改
		活不多说,直接上代码 单文件上传 1.HTML <blockquote class="layui-elem-quote layui-quote-nm" style=" ... 
- form表单系列中文件上传及预览
		文件上传及预览 Form提交 Ajax 上传文件 时机: 如果发送的[文件]:->iframe, jQurey(),伪Ajax 预览 import os img_path = os.path.j ... 
- layui  图片上传+表单提交+ Spring MVC
		Layui 的上传是最常用的, 不可或缺, 记录一下代码, 以后复制都能用!! 1.前端HTML: <div class="layui-form-item"> < ... 
- puzz: 图片和表单上传的不一致问题
		1. 方向1 用户提交表单, 图片和表单同步上传.(由同一服务器处理, 服务器压力大. 没有分离) 2. 方向2 图片和表单分开上传. 如图片访问ftp,表单提交后台(图片和后台分离) 2 ... 
- Token防止表单重复提交和CSRF攻击
		Token,可以翻译成标记!最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来. Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site re ... 
- 使用FormData格式上传图像并预览图片
		前言 做项目时,遇到表单中图像需要跟表单一起提交,这样会造成后台没办法接收到图片.后面上网调查后,明白表单提交时是默认application/x-www-form-urlencoded格式,只接受键值 ... 
- 移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器
		前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传. 这个功能模块主要有这5点比较 ... 
随机推荐
- Codeforces Round #415 (Div. 2) B. Summer sell-off
			B. Summer sell-off time limit per test 1 second memory limit per test 256 megabytes Summer hol ... 
- C++模板详解(系转载,但是个人添加了一些内容)
			原文地址:http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html 零.概述 模板是C++支持参数化多态的工具,使用模板可以使用户为类或 ... 
- 用虚拟信用卡注册Google Play开发者账号
			本文首发于http://www.abcdsxg.cn/free/net/562 虚拟信用卡 首先介绍一下虚拟信用卡(Virtual Credit Card),顾名思义,虚拟就是没有实体卡,一般都是在提 ... 
- jquery实用技巧之输入框提示语句
			我们在编写网页的时候不可避免的会遇到输入框,那么怎么设计输入框才能更加优雅呢?不同的人会有不同的答案,下面分享一个比较不错的设计. 效果图 细节 这个效果主要是通过JQuery来实现,我的思路如下: ... 
- DevExpress.XtraGrid
			DevExpress.XtraGrid控件使用 该控件类是一个表格控件,但是其具有很多方便而使用的功能,例如可以对记录进行分组,可以再记录的前面加上checkbox,可以将具有相同值的cell 进行合 ... 
- dll的制作
			https://blog.csdn.net/guanchanghui/article/details/1621031 
- QT网络编程Tcp下C/S架构的即时通信
			先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include <QDialog> #in ... 
- 远程桌面连接无法验证您希望连接的计算机的身份-mac连接远程桌面
			在使用Mac(苹果笔记本)连接远程桌面的时候提示:”远程桌面连接无法验证您希望连接的计算机的身份”,具体异常如截图:解决方法如下:1. 登录云服务器.2. 打开运行,然后输入命令gpedit.msc, ... 
- java之Pattern.compile相关正则表达式
			java之Pattern.compile相关正则表达式 1.验证邮箱地址是否正确:String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([ ... 
- UNIX和linux系统性能监控工具oswatcher
			可以在一台机器上运行oswatcher.把运行的结果拷贝到有vnc的机器上进行分析.java -jar oswbba.jar -i /mnt/hgfs/database/oswbb/archive . ... 
