Layui框架实现多图片随表单数据同步提交

首先在官方文档并没有手动上传的说明文档,这里手动实现上传原理是:在表单中有三个按钮,分别是上传图片按钮、隐藏上传按钮、表单提交按钮,点击上传图片按钮之后,图片添加在前端但是并没有真正的上传,而是在点击表单提交之后,后台返回数据(其中有新添加的表单的唯一标识)并判断表单提交成功之后再用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代码

<script>
    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){
                //上传完毕
            }
        });
    });
};
</script>

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

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1. 编写HTML页面 在HTML页面中,我们需要引入layui框架和jQuery库,并创建一个table元素,用于展示数据。 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>动态查询</title> <link rel="stylesheet" href="layui/css/layui.css"> <script src="layui/layui.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <form class="layui-form"> <div class="layui-form-item"> <label class="layui-form-label">姓名</label> <div class="layui-input-inline"> <input type="text" name="name" placeholder="请输入姓名" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-inline"> <button class="layui-btn layui-btn-normal" lay-submit lay-filter="query">查询</button> </div> </div> </form> </div> <div class="layui-col-md12"> <table class="layui-hide" id="data-table" lay-filter="data-table"></table> </div> </div> </div> </body> </html> ``` 2. 编写JavaScript代码 在JavaScript代码中,我们需要先定义一个数据源,然后使用layui的table模块渲染表格。接着,我们使用jQuery监听表单提交事件,获取用户输入的查询条件,然后根据条件重新渲染表格。 ``` layui.use(['table', 'form'], function() { var table = layui.table; var form = layui.form; // 定义数据源 var data = [{ id: 1, name: '张三', age: 20, sex: '男', email: 'zhangsan@example.com' }, { id: 2, name: '李四', age: 25, sex: '女', email: 'lisi@example.com' }, { id: 3, name: '王五', age: 30, sex: '男', email: 'wangwu@example.com' }]; // 渲染表格 table.render({ elem: '#data-table', data: data, cols: [[ {field: 'id', title: 'ID', width: 80, sort: true}, {field: 'name', title: '姓名', width: 120}, {field: 'age', title: '年龄', width: 80, sort: true}, {field: 'sex', title: '性别', width: 80}, {field: 'email', title: '邮箱', minWidth: 200} ]], page: true }); // 监听表单提交事件 form.on('submit(query)', function(data) { var name = data.field.name; var newData = []; for (var i = 0; i < data.length; i++) { if (data[i].name.indexOf(name) >= 0) { newData.push(data[i]); } } table.reload('data-table', { data: newData }); return false; }); }); ``` 在上面的代码中,我们使用table.render方法渲染表格,并在form.on方法中监听表单提交事件。当用户提交表单时,我们获取用户输入的查询条件,然后遍历数据源,筛选出符合条件的数据,并重新渲染表格。 至此,我们就成功地实现了使用layui框架实现table数据表格的动态查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值