weui框架实现上传、预览和删除图片功能代码

下面我将详细讲解使用weui框架实现上传、预览和删除图片功能的完整攻略。

1. 准备工作

首先需要引入weui框架和jQuery库,可以使用以下代码:

<link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/2.0.1/weui.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

2. HTML代码

接下来我们需要在HTML中创建一个上传图片的容器和相关的元素,可以使用以下代码:

<div class="weui-uploader">
  <div class="weui-uploader__hd">
    <p class="weui-uploader__title">图片上传</p>
    <div class="weui-uploader__info">0/9</div>
  </div>
  <div class="weui-uploader__bd">
    <ul class="weui-uploader__files" id="uploaderFiles">
      <!-- 这里的li元素就是用于展示上传的图片的 -->
    </ul>
    <div class="weui-uploader__input-box">
      <input id="uploaderInput" class="weui-uploader__input" type="file" accept="image/*" multiple="">
    </div>
 </div>
</div>

3. JavaScript代码

3.1 图片上传

使用以下JavaScript代码实现图片上传:

// 获取上传图片的按钮
var $uploaderInput = $('#uploaderInput');
// 获取用于展示上传图片的ul元素
var $uploaderFiles = $('#uploaderFiles');
// 图片数量
var fileCount = 0;
// 图片总大小
var fileSize = 0;
// 实例化一个图片上传的对象
var uploader = weui.uploader("#uploader", {
    url: "your upload url",
    auto: true,
    type: 'file',
    fileVal: 'file',
    compress: {
        width: 1600,
        height: 1600,
        quality: .8
    },
    onBeforeQueued: function (files) {
        // 验证尺寸是否符合要求
        if (["image/jpg", "image/jpeg", "image/png", "image/gif"].indexOf(this.type) < 0) {
            weui.alert('请上传图片');
            return false;
        }
        // 验证大小是否符合要求
        if (this.size > 10 * 1024 * 1024) {
            weui.alert('请上传不超过10M的图片');
            return false;
        }
        // 验证图片数量是否超出限制
        if (fileCount + files.length > 9) {
            weui.alert('最多只能上传9张图片');
            return false;
        }
        // 显示图片上传的按钮
        $uploaderInput.show();
        // 更新图片数量和大小
        fileCount += files.length;
        for (var i = 0; i < files.length; i++) {
            fileSize = files[i].size;
            var file = files[i];
            // 添加用于展示图片的li元素
            uploader.addFile(file);
        }
    },
    onProgress: function (procent) {
        // 更新图片上传的进度
        console.log(procent);
    },
    onSuccess: function (ret) {
        // 图片上传成功后的回调函数
        console.log(ret);
    },
    onError: function (err) {
        // 图片上传失败后的回调函数
        console.log(err);
    }
});

上面的代码中,我们使用weui提供的uploader组件,实例化一个图片上传的对象,指定上传图片的地址url、大小、数量等限制条件,并实现了图片上传的回调函数,用于在图片上传成功或失败后进行相关的操作。

3.2 图片预览

使用以下JavaScript代码实现图片预览:

// 图片预览
$uploaderFiles.on('click', 'li', function () {
    // 获取当前点击的图片的元素
    var $this = $(this);
    // 获取用于展示图片的ul元素中所有图片的元素
    var files = $uploaderFiles.find('li');
    // 获取当前点击的图片的索引
    var index = $this.index();
    // 显示图片预览的弹窗
    weui.gallery(files.map(function () {
        return this.style.backgroundImage.replace(/url\(\"|\"\)/ig, '');
    }), {
        start: index,
        onDelete: function (index, deleteData) {
            // 删除当前预览的图片
            delete files[index];
            fileCount--;
            fileSize -= deleteData.size;
            $uploaderFiles.html(files);
        }
    });
});

上面的代码中,我们使用weui提供的gallery组件,实现了图片预览的功能,并提供了删除图片的回调函数,用于在删除图片时更新图片数量和大小等相关信息。

3.3 图片删除

使用以下JavaScript代码实现图片删除:

// 删除图片
$uploaderFiles.on('click', '.weui-uploader__file-delete', function () {
    // 获取当前点击的删除按钮的父元素,即当前删除的图片的元素
    var $parent = $(this).parents('li');
    // 更新图片数量和大小
    fileCount--;
    fileSize -= $parent[0].dataset.size;

    // 删除当前图片的元素
    $parent.remove();
    // 判断图片数量是否少于9张,如果是,则显示上传图片按钮
    if (fileCount < 9) {
        $uploaderInput.show();
    }
});

上面的代码中,我们为删除按钮添加了点击事件,用于实现删除图片的功能。

4. 示例

下面是两个实现图片上传、预览和删除的示例,可以参考一下:

4.1 weui官方示例:

weui官方提供了一个示例,使用引入weui框架和jQuery库、HTML代码、JavaScript代码实现图片上传、预览和删除的完整攻略。可以参考以下链接:

https://github.com/Tencent/weui/wiki/%E7%B4%A0%E6%9D%90%E9%80%89%E5%8F%96%E4%B8%8A%E4%BC%A0%E7%BB%84%E4%BB%B6

4.2 我自己创建的示例:

我也创建了一个示例,使用weui框架和jQuery库、HTML代码、JavaScript代码实现图片上传、预览和删除的完整攻略。可以参考以下链接:

https://codepen.io/xtra/pen/RwGGojq

以上就是使用weui框架实现上传、预览和删除图片功能的完整攻略,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:weui框架实现上传、预览和删除图片功能代码 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JS数组reduce()方法原理及使用技巧解析

    JS数组reduce()方法原理及使用技巧解析 1. reduce()方法概述 JavaScript 中的数组对象提供了大量的方法,其中 reduce() 是一种非常有用的方法。reduce() 方法可以用来迭代一个数组并且计算最终的结果。该方法可以接受一个函数作为参数,该函数可以用来对数组中每个元素进行计算,最终返回一个累积的结果。reduce() 方法的…

    JavaScript 2023年5月27日
    00
  • 详解Chrome 实用调试技巧

    详解Chrome 实用调试技巧 调试是开发者日常工作中必不可少的一环,Chrome 浏览器的调试工具内置了非常丰富的功能,本文将详细讲解怎样通过 Chrome 调试工具来提高调试效率。 前置条件 本文所讲述的内容需要您先掌握 Chrome 调试工具的基础使用方法,如果您对此还不熟练,可以参考 Chrome 调试指南。 常见的调试技巧 1. 断点调试 通过在源…

    JavaScript 2023年6月11日
    00
  • .NET异步编程模式的三种类型介绍

    当今的软件开发需要在面对并发的任务时能够高效地处理数据和事件。异步编程模式是一种提高程序效率和性能的方式,尤其是针对I/O密集型的应用程序。在.NET平台上,异步编程模式被广泛使用,并且有多种实现方式,下面我们将介绍.NET异步编程模式的三种类型。 1. Async/Await模式 异步编程的目标是提高程序的效率,通过让程序在某个任务执行的同时可以执行其他任…

    JavaScript 2023年5月28日
    00
  • JavaScript实现简单的隐藏式侧边栏功能示例

    下面是“JavaScript实现简单的隐藏式侧边栏功能示例”的完整攻略: 一、需求分析 在进行网页设计时,我们往往需要一个侧边栏(Sidebar)来承载一些较为次要的信息或者操作。但是,如果这个侧边栏总是显眼地存在于页面左侧或右侧,难免会妨碍用户的视线,影响页面的美观度。因此,我们需要一种方法来实现一个隐藏式的侧边栏,以达到在需要时展示,不需要时隐藏的效果。…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript的表达式与运算符

    详解JavaScript的表达式与运算符 什么是表达式与运算符? 表达式(Expression)是一个可求值的代码片段,它可以包含变量、运算符、函数调用等,并最终会返回一个值。JavaScript 中的表达式有很多种类,如算术表达式、赋值表达式、比较表达式、逻辑表达式等。 运算符(Operator)则是用来处理表达式的一种特殊符号,它可以识别操作数之间的关系…

    JavaScript 2023年5月19日
    00
  • Bootstrap中表单控件状态(验证状态)

    Bootstrap是一款流行的前端框架,它提供了丰富的表单控件状态(验证状态)来帮助开发者快速构建现代化的Web表单。本篇攻略将详细讲解Bootstrap中表单控件状态的使用方法。 表单控件状态分类 在Bootstrap中,表单控件的状态共分为以下四种: 默认状态 成功状态 警告状态 错误状态 使用方法 默认状态 表单控件默认状态不需要特殊设置,只需要按照B…

    JavaScript 2023年6月10日
    00
  • javascript:history.go()和History.back()的区别及应用

    下面是“javascript:history.go()和History.back()的区别及应用”的完整攻略。 什么是history.go()和history.back()? history.go()和history.back()是JavaScript中操作浏览器历史记录的方法,它们都属于浏览器对象的一部分,即window.history对象。其中,hist…

    JavaScript 2023年6月11日
    00
  • JS实现直接运行html代码的方法

    JS 实现直接运行 html 代码的方法其实比较简单,一般步骤如下: 创建一个 iframe,将需要运行的 html 代码动态插入到 iframe 中; 通过 iframe contentWindow 属性获取 iframe 文档 window 对象; 将要执行的代码放在 window.onload 回调函数中,保证代码执行在页面元素都已经加载完毕后; 在 …

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部