layui原生框架下,展示、替换图片(修改页面)

2023-11-12

最终页面效果如下

(由于图片没有资源路径,所以没有展示出来。图片展示可以忽略)

代码如下

        <div class="layui-form-item">
            <label class="layui-form-label" style="width: 20%"><span style="color:red">*</span>产品图</label>
            <div class="layui-input-block">
				<span id="spanFront">
					<img id="editForm_productImg" src="" alt="产品图片" />

					</span><span class="red ml10" id="edit_productImg_msg"></span>
                <a href="javascript:;" id="changeFront" onclick="changeImg('Front')">更换</a>
                <a href="javascript:;" id="cancelFront" onclick="changeCancel('Front')">取消</a>
            </div>
            <p style="color: red ;margin-left: 10px;">图片尺寸:300px*300px,图片大小不超过500KB,格式:jpg、png</p>
        </div>

点击更改按钮,可以替换图片,效果如下(原理是将img标签隐藏,插入选择文件的input标签)

更改按钮,取消按钮 代码如下

    window.changeImg = function (str){
        var input = "<input type='file' lay-verify=\"editCheck\"  id='editForm_productImg" + str + "input' class='input_normal w160 required' name='updateNewGoodproductImg" + str
            + "'/>";
        $("#editForm_productImg" + "").attr("style", "display:none");
        $("#span" + str).append(input);
        $("#change" + str).text("");
        $("#cancel" + str).text("取消");
        if (str == "Front")
            changeFront = true;
    }

    window.changeCancel = function (str){
        $("#editForm_productImg" + str + "").removeAttr("style");
        $("#editForm_productImg" + str + "input").remove();
        $("#change" + str).text("更改");
        $("#cancel" + str).text("");
        $('#edit_suply' + str + '_msg').html('');
        if (str == "Front")
            changeFront = false;
    }

(此处特别注意,这里使用的是将id与name分别进行拼接的方法,所以在做修改页面的校验的时候,或者对修改页面进行其他的图片操作的时候,注意图片的id,name是否拼接。在controller层也要重新定义一个图片的属性名,用于修改图片的方法中,此处的属性名要和前端页面拼接好的name保持一致) 

修改的弹出框 代码

    //打开修改的弹窗
    var Index;
    function updateNewGood(data) {
        $('input[type="file"][id^="editForm_productImg"]').remove();//清除选择文件的input标签
        $('img[id^="editForm_productImg"]').show();//展示图片标签
        Index = layer.open({
            type: 1,
            content: $("#updateDiv"),
            area: ['600px', '300px'],
            shade: 0.6,//遮罩层透明度 0-1 默认0.3
            shadeClose: true,//是否点击遮罩层关闭弹窗 默认false
            resize: false,
            anim: 3,
            skin: 'layui-layer-molv',
            title: '编辑新机',
            success: function () {
                //装载新的数据
                $('#updateDataFrm')[0].reset();

                $("#editForm_productImg").attr("src",data.productImg);

                form.val("updateDataFrm", data);
                //装载新的数据
                type = "PUT";
            }
        });
    }

修改页面的监听提交

代码如下

    //监听提交
    form.on('submit(updateSubmit)', function (data) {
        let formData = new FormData(data.form);
        let myfile = $("#addForm_newGoodproductImg")[0].files[0];
        formData.append('newGoodproductImgFront',myfile);
        //增加样式
        $('.addS').addClass(DISABLED);
        $(".addS").attr("disabled", "disabled"); // 避免多次提交,提交置灰
        requestData('/goods/pcNewGood/newGoodEdit', 'post', formData, function (data) {
            if (data.code === 0) {
                tableIns.reload();
                layer.msg(data.msg, {icon: 1}) ;
                layer.close(Index);//关闭弹框
            } else {
                layer.msg(data.msg, {icon: 2}) ;
            }
        }, true, null, false);
    });

下面是修改页面的校验 (额外注意图片的id、name属性为是拼接后的值,前面有提到过)

       editCheck: function (value,item){
            var msg="";
            var attrName=$(item).attr('name');
            if(attrName=="actName"){
                if (value == "") {
                    msg = "产品名称不能为空";
                }
            }
            if(attrName=="describe"){
                if (value == "") {
                    msg = "一句话描述不能为空";
                }
            }
            if(attrName=="updateNewGoodproductImgFront"){
                if (value == "") {
                    msg="请选择要上传的图片";
                } else if(!(value.endsWith(".jpg")) && ! (value.endsWith(".png")) &&!(value.endsWith(".JPG")) && ! (value.endsWith(".PNG"))  ){
                    msg="请上传jpg、png格式的图片";
                }
                else if((document.getElementById("editForm_productImgFrontinput").files[0].size)/1024>=size){
                    msg="请上传"+size+"KB以内的图片";
                }
            }

            return msg;
        }

controller层的代码用的是已经封装好的方法,就不展示了。

好了,希望对大家有帮助,来自小萌新的一篇投稿,不对的地方,多多指教

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

layui原生框架下,展示、替换图片(修改页面) 的相关文章

随机推荐

  • MATLAB遍历子文件夹及其下文件

    MATLAB遍历子文件夹及其下文件 以前从未遇到过用MATLAB批处理文件的情况 此次项目需要批量将二进制数据文件导入matlab进行svm分类 现将matlab遍历子文件夹及其文件的方法记录下来 文件目录结构 maindir subdir
  • Java基础必知必会

    基础知识笔记记录 持续更新ing 个人博客 www zhazhapeng cn 1 JDK JRE的区别 JDK Java Development Kit 开发工具 基本类库 javac 编译 javap 反编译 javadoc 编译文档
  • C++ 基础: cin和getline() 有啥区别?

    所谓温故而知新 所以时不时会回头来看看我们最最基础的知识 获取标准键盘输入的方法有多种 以C 语言来说 最常用的就是cin 和geline 那么它们之间有什么区别呢 我们总结一下 一 cin和geline的异同点 在 C 中 cin 和 g
  • Boost电源原理及工作过程详解

    1 Boost电路基本介绍 Boost电路在电池的一些场景非常常见 用于给电池电压升压后再给电路进行供电的场景比较多 随着电动汽车的飞速发展 在汽车电子的场景使用也越来越多 开关电源的主要部件包括 输入源 开关管 储能电感 控制电路 二极管
  • C1认证:作业四

    1 任务背景 为了摆脱 成为 只会CRUD 没有自我核心竞争力 无思想的编程的大龄码农 所以 开展了本次实验 目的是 去了解算法 去欣赏它的美 去感受它的优雅 使自己成为有灵魂的工程师 2 任务大纲 一 任务一 轮播图片 HTML CSS
  • 开源 LLM (大语言模型)整理(一)

    Large Language Model LLM 即大规模语言模型 是一种基于深度学习的自然语言处理模型 它能够学习到自然语言的语法和语义 从而可以生成人类可读的文本 所谓 语言模型 就是只用来处理语言文字 或者符号体系 的 AI 模型 发
  • C++模板类中的成员函数以及模板函数在类外定义的方式

    如下模板类 template
  • 零跑汽车财报解读:短跑“增程”双动力,长跑“自研”加速度

    3月21日晚间 零跑汽车交出了上市后的首份年度成绩单 纵观零跑汽车这份财报 其2022年的发展不乏亮点 2022年 零跑汽车实现营收123 85亿元 同比增长295 41 以远超行业的水平实现营收的迅速增长 充分证明了零跑汽车强大的经营韧性
  • opencv从内存缓冲区中读取图像数据

    1 从内存中加载图像数据 s Image Info stDispImgInfo spImgInfo gt m stDispInfo cv InputArray pic arr stDispImgInfo pImageBuf nWidth n
  • 如何ping一个网段下的所有IP地址,并保存返回结果

    循环的ping一个网段的所有IP地址 for L i in 1 1 255 do ping n 1 w 60 192 168 1 i find 回复 gt gt d pingall txt n 表示一次ping几次 w 表示一次ping60
  • 稳定性和高可用如何保障?一手测评华为云网站高可用解决方案

    一 前言 在如今科技高速发展的时代 几乎每个企业都依赖互联网 离不开互联网 很多企业的业务也都依托于互联网 比如我们熟知的电商 股市 直播 甚至是用于乘坐地铁 公交买票过闸的APP 如今可以说是一个互联网时代的完全体 但你们是否想过一个问题
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 文章目录 第 4 部分 计算机软件与
  • k8s学习(四) k8s使用nodeport方式配置service对外暴露服务

    Pod是有生命周期的 使用凡人皆有一死来描述pod很贴切 当一个工作节点 node 销毁时 节点上运行的pods也会被销毁 ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行 每一个Pod都有一个独
  • IDEA的作用

    IDEA IntelliJ IDEA 是一款由 JetBrains 开发的 Java 集成开发环境 IDE 它不仅支持 Java 开发 还支持多种其他编程语言和框架 包括 Kotlin Scala Groovy Android Spring
  • 【Linux运维】Ubuntu Server的无密码开机自动登录

    需求 最近我们在开发一个基于树莓派的小盒子 我们会采购一些树莓派 装好外盒 装好arm版本的 Ubuntu Server 20 04 系统 并且装上我们开发的配套软件 对接我们云端的服务 最终把小盒子卖给用户并提供一些收费的服务 我们在安装
  • ORACLE如何实现行转列

    可通过正则截取实现 例如下图 将 1 2 字符串通过 截取 分为两行数据 Select Regexp Substr 1 2 1 Level As SKU From Dual Connect By Regexp Substr 1 2 1 Le
  • 2022年安全员-C证操作证考试题库及在线模拟考试

    题库来源 安全生产模拟考试一点通公众号小程序 2022安全员 C证理论题库系安全员 C证全部考试题库上机考试练习题 2022年安全员 C证操作证考试题库及在线模拟考试根据安全员 C证最新教材汇编 安全员 C证考试模拟题随时根据安全生产模拟考
  • 一、robotframework 安装

    测试环境 windows 安装前提 已安装python robotframework基于python环境 python安装过程略过 安装的软件参考的这篇博文robot framework自动化测试参考手册 安装python库 安装robot
  • Linux下静态库生成和使用

    一 静态库概念 1 库是预编译的目标文件 object files 的集合 它们可以被链接进程序 静态库以后缀为 a 的特殊的存档 archive file 存储 2 标准系统库可在目录 usr lib与 lib中找到 比如 在类Unix系
  • layui原生框架下,展示、替换图片(修改页面)

    最终页面效果如下 由于图片没有资源路径 所以没有展示出来 图片展示可以忽略 代码如下 div class layui form item div