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

yizhihongxing

下面我将详细讲解使用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与jQuery实现的兼容多浏览器Ajax请求实例

    针对“js与jQuery实现的兼容多浏览器Ajax请求实例”这一主题,我将提供以下完整攻略: 步骤1:引入jQuery库到你的项目中 使用jQuery库的最简单方式是从官网下载或链接CDN,并在你的项目中引入。以下是引入jQuery的示例代码: <!DOCTYPE html> <html> <head> <title…

    JavaScript 2023年6月11日
    00
  • JavaScript常用工具函数库汇总

    JavaScript常用工具函数库汇总 什么是JavaScript常用工具函数库? JavaScript常用工具函数库指的是一组JavaScript函数集合,旨在提供在日常工作中最常用和最基础的工具函数,以便在开发过程中更便捷地进行常见操作,以提高工作效率。 常用工具函数库有哪些? 常用工具函数库有很多,这里推荐以下几个: 1. Lodash Lodash是…

    JavaScript 2023年5月18日
    00
  • JS使用tofixed与round处理数据四舍五入的区别

    JS使用toFixed与round处理数据四舍五入的区别 在JavaScript中,我们常常需要对数字数据进行四舍五入的操作。在这种情况下,通常有两个方法来实现此目的,即使用toFixed和round方法。这两种方法在实现上有很大的区别,这篇文章将详细介绍这两种方法的区别以及它们的使用。 关于toFixed方法的介绍 toFixed是JavaScript提供…

    JavaScript 2023年5月28日
    00
  • js处理包含中文的字符串实例

    要处理包含中文的字符串,需要注意字符编码的问题以及字符串长度计算的问题。 在JavaScript中,字符串长度可以使用str.length来获取,对于包含中文的字符串,由于中文字符采用的是Unicode编码,因此一个中文字符在JavaScript中通常被视为两个字符。 因此,如果要获取包含中文的字符串的字符串长度,需要将中文字符视为两个字符进行计算。可以使用…

    JavaScript 2023年5月19日
    00
  • JavaScript中模拟实现jsonp

    JavaScript中模拟实现jsonp,需要遵循以下步骤: 1. 创建一个script标签 在DOM中创建一个script标签,并设置其src属性为需要跨域请求的URL,同时还需要设置一个callback参数,作为后端接口返回数据的回调函数名。 const script = document.createElement(‘script’); script.…

    JavaScript 2023年5月27日
    00
  • JS中数组Array的用法示例介绍

    下面是JS中数组Array的用法示例介绍的完整攻略。 数组定义与初始化 数组定义了一系列变量,可以通过一个变量名获取其中任意一个变量的值。在 JavaScript 中,可以使用以下方式来定义和初始化一个数组: let array = [1, 2, 3, 4, 5]; // 数组里有5个数字 let emptyArray = []; // 定义空数组 数组的基…

    JavaScript 2023年5月27日
    00
  • Javascript toString 方法

    以下是关于JavaScript toString方法的完整攻略。 JavaScript toString方法 JavaScript toString方法是Number对象的一个方法,用于将数字转换为字符串。我们可以使用toString方法来将数字转换为不同进制的字符串,如二进制、八进制、十六进制。 下面是一个使用toString方法的示例: var num …

    JavaScript 2023年5月11日
    00
  • 关于__defineGetter__ 和__defineSetter__的说明

    关于 __defineGetter__ 和 __defineSetter__ 的说明 __defineGetter__ 和 __defineSetter__ 是 JavaScript 中的两个方法,它们可以用于动态定义属性的 getter 和 setter 方法。在 ES5 中已经被废弃,建议使用 Object.defineProperty 来替代它们。 _…

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