【layui】checkbox、多图片上传、视频上传、layer.open弹窗、admin.popup的使用

网页多媒体元素处理:图片与视频上传及复选框管理
本文展示了如何使用layui框架实现网页中的多图片上传、视频上传功能,以及复选框的选择管理。通过HTML结构定义和JavaScript编辑,实现了文件上传的交互逻辑,包括上传前的提示、上传后的预览与删除,以及复选框的验证规则。同时,提供了查看视频的弹窗功能。

一、多图片上传

引入 CSS 定义样式

<style>
.layui-upload-list{
     
      margin: 10px 0 0; }
.edit_goods .layui-upload-img {
     
      width: 110px;height: 110px;margin: 0 10px 10px 0;display: inline-block;position: relative; }
.edit_goods .layui-upload-img img{
     
      width: 100%;height: 100%; background: #e6e6e6; object-fit: contain; }
.edit_goods .layui-upload-img .handle{
     
      position: absolute;bottom: 0;left: 0;width: 100%; color: #fff;cursor: pointer;
background-color: rgba(0,0,0,0.4);text-align: center; }
</style>

定义 HTML 结构

<div class="layui-form-item">
    <label class="layui-form-label">产品图片</label>
    <div class="layui-input-block">
        <div class="layui-upload">
            <div style="overflow: hidden;">
                <div class="layui-input-inline" style="width: auto;">
                    <button type="button" class="layui-btn" id="multi_img_uplaod">多图片上传</button> 
                </div>
                <!-- <div class="layui-input-inline" style="width: auto;height: 38px;line-height: 38px;"><p>(建议图片尺寸为750px * 750px)</p></div> -->
            </div>
            <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                预览图:<div class="layui-upload-list" id="multi_img_uplaod_btn"></div>
            </blockquote>
        </div>
    </div>
</div>

引入 JS 编辑

<script>
layui.data.sendParams = function(params){
     
     
// console.log(params);
layui.use(['admin','form','upload','layedit','view','setter','laytpl','layer'], function(){
     
     
    var $ = layui.$
        ,admin = layui.admin
        ,setter = layui.setter
        ,layedit = layui.layedit
        ,element = layui.element
        ,form = layui.form
        ,view = layui.view
        ,layer = layui.layer
        ,laytpl = layui.laytpl
        ,upload = layui.upload
        ,router = layui.router();

    element.render();
    form.render(null, 'edit_goods');
    if(params.id){
     
     
        admin.req({
     
     
            url: layui.setter.baseUrl+'admin/goods/goodsEdit', //实际使用请改成服务端真实接口
            data: {
     
     id: params.id},
            type:'get',
            success: function(res){
     
     
                if(res.code==1){
     
     
                    if(res.data.info.goods_img.length!=0){
     
     
                        var imgList = '';
                        for(var i in res.data.info.goods_img){
     
     
                            imgList+='<div class="layui-upload-img">';
                            imgList+='<div class="handle"><i class="layui-icon layui-icon-delete"></i></div>';
                            imgList+='<img src='+ res.data.info.goods_img[i] +' οnclick="see_img(this)">';
                            imgList+='<input type="text" name="goods_imgs[]" value="'+res.data.info.goods_img[i]+'" class="layui-input" style="display:none;">';
                            imgList+='</div>';
                        }
                        $('#multi_img_uplaod_btn').append(imgList);
                       //获取id下的div元素个数
                         let uploadedCount = $('#multi_img_uplaod_btn').children('.layui-upload-img').length;
                         if (uploadedCount >= 3) {
     
     
                             // 如果已上传图片数量达到三张,禁用上传按钮或其他相关操作
                             $('#multi_img_uplaod').addClass('layui-btn-disabled').prop('disabled', true); // 禁用上传按钮
                         }
                    }
                    form.render();
                }else{
     
     
                    layer.msg(res.msg);
                }
            }
        });
    }
 
    // 多图片上传
    upload.render({
     
     
        elem: '#multi_img_uplaod'
### 动态创建Checkbox并与表单提交绑定 为了实现在Layui `layer.open` 弹出层中动态添加 `checkbox` 并将其与表单提交绑定,可以按照如下方式操作: #### 准备工作 确保已经正确引入了 Layui 插件[^3]。 ```html <link rel="stylesheet" href="./layui/css/layui.css"> <script src="./layui/layui.js"></script> ``` #### 创建HTML结构 定义一个用于显示弹出层的基础 HTML 结构。这里使用了一个 div 容器来承载整个表单内容,并设置了类名 `layui-form` 来启用 Layui 表单样式[^2]。 ```html <div id="popupForm" style="display:none;"> <form class="layui-form" action=""> <!-- checkbox 将在此处动态生成 --> <div id="dynamicCheckboxes"></div> <button type="submit" class="layui-btn">提交</button> </form> </div> ``` #### JavaScript逻辑 通过JavaScript 实现动态加载 `checkbox` 和处理表单提交事件。当调用 `layer.open()` 方法打开新窗口时,可以在回调函数内执行必要的 DOM 操作以插入新的输入控件;同时监听表单的 submit 事件以便捕获用户提交的数据[^1]。 ```javascript // 初始化 layui 组件 layui.use(['layer', 'form'], function(){ var layer = layui.layer; var form = layui.form; // 打开弹出层并初始化数据 layer.open({ title: '选择项', content: $('#popupForm').html(), success: function(layero, index){ // 假设我们有一组选项列表 let options = ['Option A', 'Option B', 'Option C']; // 遍历这些选项并将它们转换成 Checkbox 控件 $.each(options, function(i, optionText){ $(`<input type="checkbox" name="options[]" value="${optionText}" title="${optionText}"><br>`).appendTo('#dynamicCheckboxes'); }); // 更新表单渲染状态 form.render('checkbox'); // 提交表单时触发的动作 $('form.layui-form').on('submit', function(e){ e.preventDefault(); // 阻止默认行为 // 获取选中的值 const selectedValues = []; $("input[name='options[]']:checked").each(function() { selectedValues.push($(this).val()); }); console.log(selectedValues); // 输出已勾选的内容到控制台 // 关闭当前弹窗 layer.close(index); }); } }); }); ``` 上述代码展示了如何在 Layer 弹出层内部构建带有可交互性的复选框,并且能够响应用户的点击动作收集所做选择的信息。注意这里的 `$.each` 是 jQuery 的语法糖,如果项目不依赖于 jQuery,则需替换为原生 JS 或其他库的方法实现相同功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值