首先在官方文档并没有手动上传的说明文档,这里手动实现上传原理是:在表单中有三个按钮,分别是上传图片按钮、隐藏上传按钮、表单提交按钮,点击上传图片按钮之后,图片添加在前端但是并没有真正的上传,而是在点击表单提交之后,后台返回数据(其中有新添加的表单的唯一标识)并判断表单提交成功之后再用JS事件触发隐藏上传按钮,这时真正实现图片上传,并传给后台相关数据,并在数据库中添加唯一表示来属于哪个提交的表单。下面是代码实现:

HTML代码:

<form class="layui-form" action="" >
<div class="layui-form-item">
<label class="layui-form-label">姓名:</label>
<div class="layui-input-block">
<input type="text" name="name" id="name" required maxlength="8" lay-verify="required" placeholder="必填" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">专业:</label>
<div class="layui-input-inline">
<input type="text" name="major" id="major" maxlength="8" required lay-verify="required" placeholder="必填" autocomplete="off" class="layui-input">
</div> </div>
<div class="layui-form-item">
<label class="layui-form-label">QQ/微信:</label>
<div class="layui-input-inline">
<input type="text" name="QQ" id="QQ" required maxlength="12" lay-verify="required" placeholder="必填" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机:</label>
<div class="layui-input-inline">
<input type="text" name="phone" id="phone" maxlength="11" required lay-verify="required" placeholder="必填(查询结果时所需)" autocomplete="off" class="layui-input" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">性别:</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="男" title="男" checked>
<input type="radio" name="sex" value="女" title="女" >
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">图片上传:</label>
<div class="layui-input-block">
<div class="layui-upload">
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;padding:10px 0 10px 0; ">
<div class="layui-upload-list" id="img_upload"></div>
</blockquote>
<button type="button" class="layui-btn" style="background-color:#4383d3" id="img_upload_btn">添加图片</button>
</div>
<button id="hideUpload" type="button" style="display: none"></button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-special">
<button class="layui-btn" id="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary" id="reset" >重置</button>
</div>
</div> </form>

JS代码:

window.onload=function(){

     //Demo
layui.use(['form','upload','element','laydate'], function(){
var form = layui.form;
var $ = layui.jquery
,upload = layui.upload;
//监听提交
form.on('submit(formDemo)', function(data){
var date = new Date();
subData = {
name:data.field.name.toString(),
major:data.field.major.toString(),
qq:data.field.QQ.toString(),
mobile_phone:data.field.phone.toString(),
sex:data.field.sex.toString()
} ajax({
type:'post',
url:'/free_clinic/submit',
data:subData,
success:(res)=>{
if(JSON.parse(res).msg == 'success'){
tip_text.innerHTML = '预约成功,请等待工作人员处理!';
tip_tip.style.display = 'block';
}else{
tip_text.innerHTML = '预约失败,请重新预约!';
tip_tip.style.display = 'block';
} },
error:(err)=>{
tip_text.innerHTML = '预约失败,请重新预约!';
}
});
return false;
}); //多图片上传
upload.render({
elem: '#img_upload_btn' //绑定点击按钮
,url: '/free_clinic/upload' //访问后台路径
,multiple: true //确认上传多张图片
,accept: 'images/*' //图片格式
,number: 6 //最大上传图片数量
,auto:false //取消自动上传
,method: 'post' //请求上传的 http 类型
,bindAction:'#hideUpload' //绑定真正的上传按钮
,data:{ //访问后台提交的数据
id:()=>{
return $('#phone').val();//官方文档说明:实现动态传值
},
time:()=>{
return subData.signup_time;
} }
,choose: function(obj){
//预读本地文件示例,不支持ie8
obj.preview(function(index, file, result){
$('#img_upload').append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img">');
});
}
,done: function(res){
//上传完毕 }
});
});
};

ps:后台一定要在访问后台之后返回JSON格式的数据

layui框架实现多图片手动上传和随表单提交方法的更多相关文章

  1. servlet文件上传2——复合表单提交(数据获取和文件上传)

    上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(common ...

  2. tp中附件上传文件,表单提交

    public function tianjia(){ $goods=D('Goods'); if(!empty($_POST)){ if($_FILES['f_goods_image']['error ...

  3. 【文件上传】文件上传的form表单提交方式和ajax异步上传方式对比

    一.html 表单代码 …… <input type="file" class="file_one" name="offenderExcelFi ...

  4. 为什么上传文件的表单里要加个属性enctype

    为什么上传文件的表单里要加个属性enctype 上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上 ...

  5. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  6. Retrofit 2.0 轻松实现多文件/图片上传/Json字符串/表单

    如果嫌麻烦直接可以用我封装好的库:Novate: https://github.com/Tamicer/Novate 通过对Retrofit2.0的前两篇的基础入门和案例实践,掌握了怎么样使用Retr ...

  7.  为什么上传文件的表单里要加个属性enctype----摘录

    上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么写,知其然而不知其所以然.那到底为什 ...

  8. Struts2文件上传(基于表单的文件上传)

    •Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目   •Commons-Fil ...

  9. 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程

    使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: ...

随机推荐

  1. 2018年DDoS攻击全态势:战胜第一波攻击成“抗D” 关键

    2018年,阿里云安全团队监测到云上DDoS攻击发生近百万次,日均攻击2000余次.目前阿里云承载着中国40%网站,为全球上百万客户提供基础安全防御.可以说,阿里云上的攻防态势是整个中国攻防态势的缩影 ...

  2. @hdu - 6687@ Rikka with Stable Marriage

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个稳定婚姻匹配问题,其中第 i 个男生与第 j 个女生之间 ...

  3. 【NS2】trace 文件格式(转载)

    本文档是对 http://nsnam.isi.edu/nsnam/index.php/NS-2_Trace_Formats > 的翻译. 译注:本文描述的无线格Trace格式已经有些陈旧,现在一 ...

  4. Tcp之双向通信

    TestServer.java package com.sxt.tcp; /* * 服务端 */ import java.io.DataInputStream; import java.io.Data ...

  5. Java练习 SDUT-2737_小鑫の日常系列故事(六)——奇遇记

    小鑫の日常系列故事(六)--奇遇记 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 今天,小鑫在山上玩的时候,意外被推下 ...

  6. 请注意更新TensorFlow 2.0的旧代码

    TensorFlow 2.0 将包含许多 API 变更,例如,对参数进行重新排序.重新命名符号和更改参数的默认值.手动执行所有这些变更不仅枯燥乏味,而且容易出错.为简化变更过程并让您尽可能顺畅地过渡到 ...

  7. day5-python之面向过程编程

    一.面向过程编程 #1.首先强调:面向过程编程绝对不是用函数编程这么简单,面向过程是一种编程思路.思想,而编程思路是不依赖于具体的语言或语法的.言外之意是即使我们不依赖于函数,也可以基于面向过程的思想 ...

  8. TCP/IP 、HTTP和SOCKET

    TCP/IP协议概念 TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这 ...

  9. oracle函数 DUMP(w[,x[,y[,z]]])

    [功能]返回数据类型.字节长度和在内部的存储位置. [参数] w为各种类型的字符串(如字符型.数值型.日期型……) x为返回位置用什么方式表达,可为:8,10,16或17,分别表示:8/10/16进制 ...

  10. Datamation Index

    Datamation Index     Understand how to handle big data and improve organizational agility to support ...