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图片层预览的更多相关文章

  1. Springboot+Vue实现将图片和表单一起提交到后端,同时将图片地址保存到数据库、再次将存储的图片展示到前端vue页面

    文章目录 1.实现的效果 2.Vue前端 3.图片上传 4.字段变量根据自己的字段名自行设置(这里不给出了,哈哈哈) 5.method方法 5.1.图片显示在选择框中,同时返回后端存储的地址 5.2查 ...

  2. el-upload上传文件和表单一起提交+后端接收代码

    目录 一.前言 二.前端页面展示 三.表单代码 四.Data部分 五.JS方法 六.后端接收方式 七.总结 一.前言 我们在做前端时,会遇到这样的需求,上传Excel文件,并且还要和填写的表单数据,一 ...

  3. layui文件单文件和多文件的上传、预览以及删除和修改

    活不多说,直接上代码 单文件上传 1.HTML <blockquote class="layui-elem-quote layui-quote-nm" style=" ...

  4. form表单系列中文件上传及预览

    文件上传及预览 Form提交 Ajax 上传文件 时机: 如果发送的[文件]:->iframe, jQurey(),伪Ajax 预览 import os img_path = os.path.j ...

  5. layui 图片上传+表单提交+ Spring MVC

    Layui 的上传是最常用的, 不可或缺, 记录一下代码, 以后复制都能用!! 1.前端HTML: <div class="layui-form-item"> < ...

  6. puzz: 图片和表单上传的不一致问题

    1.    方向1 用户提交表单, 图片和表单同步上传.(由同一服务器处理, 服务器压力大. 没有分离) 2.    方向2 图片和表单分开上传. 如图片访问ftp,表单提交后台(图片和后台分离) 2 ...

  7. Token防止表单重复提交和CSRF攻击

    Token,可以翻译成标记!最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来. Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site re ...

  8. 使用FormData格式上传图像并预览图片

    前言 做项目时,遇到表单中图像需要跟表单一起提交,这样会造成后台没办法接收到图片.后面上网调查后,明白表单提交时是默认application/x-www-form-urlencoded格式,只接受键值 ...

  9. 移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器

    前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传. 这个功能模块主要有这5点比较 ...

随机推荐

  1. awk查找

    cat catalina.out|grep "报表 sql"|awk -F '[' '{print $5}'|awk -F ']' '{print $1}'|sort -n|uni ...

  2. 动画演示10个有趣但毫无用处的Linux命令

    Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了.在这些大量的有用的命令和脚本中,你会发现有少部 分命令工具不那么有用的——如果你不愿意说是完全没用处的话.你 ...

  3. mongoDB BI 分析利器 - PostgreSQL FDW (MongoDB Connector for BI)

    背景 mongoDB是近几年迅速崛起的一种文档型数据库,广泛应用于对事务无要求,但是要求较好的开发灵活性,扩展弹性的领域,. 随着企业对数据挖掘需求的增加,用户可能会对存储在mongo中的数据有挖掘需 ...

  4. 微信小程序开发前期准备

    开发文档 官方开发文档 开发IDE 官方工具下载 UI组件 WeUI:是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,新手建议使用: ZanUI-WeAp ...

  5. javascprit form表单提交前验证以及ajax返回json

    1.今天要做一个手机验证码验证的功能.需求是前端页面点击发送 短信验证码,后台接收后通过ajax返回到前端,之后前端在提交时候进行验证.思路很简单,不过做的过程还是学到不少的东西. 1.ajax请求后 ...

  6. Springmvc ajax跨域请求处理

    上次给一个网站写网站  前后端分离 最后跪在ajax跨域上面了  自己在网上找了个方法  亲试可用  记录一下 写一个类  继承HandlerInterceptorAdapter package co ...

  7. DFS BFS代码

    #define maxnum 30 #include<bits_stdc++.h> int visited[maxnum]={0}; using namespace std; typede ...

  8. TIA Portal 和 scout 之间的驱动器地址分配

    TIA Portal集成了scout.在使用simotion控制器时,分配驱动装置的地址可能会碰到问题. 解决方法: 1)在配置驱动时,TIA Portal软件的语言需要选择为应为中文 2)unico ...

  9. lua-excel助手

    excel是我们工作及生活当中不可或缺的东西,好吧,我是一个游戏程序员,数值哥哥肯定会给我些表格的.回归正题,为什么需要做这个封装? 为什么需要这个项目,因为我们需要使用程序进行自动化操作 VBA我们 ...

  10. SAPGUI系统登录页面配置的SAProuter有什么用

    大家在安装完SAPGUI后,准备添加系统列表进行登录时,注意过这个SAProuter字段么? 从SAP的帮助文档上可以找到SAProuter的定义: https://help.sap.com/saph ...