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日

相关文章

  • 如何使用PHP实现javascript的escape和unescape函数

    要在PHP中实现JavaScript的escape和unescape函数,我们可以使用PHP的内置函数urlencode和urldecode。 1.使用urlencode(类似于escape函数)进行编码 urlencode函数将字符串编码为类似于escape函数的格式。它将所有非字母数字字符(除了-_.)都替换为百分比加上其十六进制值的编码。 以下是使用u…

    JavaScript 2023年5月19日
    00
  • javascript字符串替换及字符串分割示例代码

    下面就是关于“javascript字符串替换及字符串分割”的完整攻略。 JavaScript 字符串替换 在 JavaScript 中,可以使用 replace() 方法实现字符串替换功能。该方法接收两个参数,第一个参数是要替换的字符串或正则表达式,第二个参数是新的字符串。 下面是一个简单的示例,代码如下: let str = "hello Jav…

    JavaScript 2023年5月28日
    00
  • JavaScript中常见陷阱小结

    请跟我一起详细了解JavaScript中的常见陷阱。 1. JavaScript中的类型转换陷阱 在JavaScript中,类型转换可能会导致一些令人困惑的结果。以下是一些常见的类型转换陷阱: 1.1 字符串和数字的陷阱 在JavaScript中,当字符串和数字进行相加时,会将字符串转换为数字并执行加法运算。但是,如果字符串中包含非数字字符,则会将其转换为N…

    JavaScript 2023年6月10日
    00
  • Java设置httponly cookie的实现示例

    下面我会为你详细讲解“Java设置httponly cookie的实现示例”的完整攻略,并且提供两个示例说明。 概述 HTTPOnly是一种用来增强Cookie安全性的标志,其作用是防止跨站脚本攻击(XSS)窃取用户的Cookie。如果设置了HTTPOnly标志,那么JavaScript脚本将无法读取到Cookie。 在Java应用程序中,使用HTTPOnl…

    JavaScript 2023年6月11日
    00
  • 深入理解JS中的substr和substring

    深入理解JS中的substr和substring 在JavaScript字符串操作中,substr()和substring()是两个常用的函数,都用来截取字符串。但在具体应用场景和实现方式有所不同,因此需要深入理解其差异。 substr() substr()函数接受两个参数,第一个参数是截取的起始位置,第二个参数是截取的长度。如果省略第二个参数,则默认截取至…

    JavaScript 2023年6月11日
    00
  • CSS语法与JSON、JS对象区别比较

    下面是关于“CSS语法与JSON、JS对象区别比较”的详细讲解: CSS语法 CSS(Cascading Style Sheets)是一种用于描述网页样式的语言,它与HTML结合起来,可以使网页达到更好的视觉效果。CSS样式通常是在样式表中定义的,这些样式表可以是外部样式表、内部样式表或者内联样式。 CSS的基本语法结构如下: 选择器 { 属性名1: 属性值…

    JavaScript 2023年5月27日
    00
  • 理解Angular数据双向绑定

    我们来详细讲解理解Angular数据双向绑定的完整攻略。数据双向绑定是Angular的核心功能之一,它可以让我们轻松地在模板中展示不同的值,同时也能让用户对输入的值做出及时的响应。以下是学习该功能的完整攻略: 了解Angular的数据双向绑定概念 数据双向绑定是指将模板中的值和组件中的属性绑定在一起,使得属性的变化会自动地反映在模板上,同时模板中的值的改变也…

    JavaScript 2023年6月11日
    00
  • javascript 日期联动选择器 [其中的一些代码值得学习]

    下面是详细讲解“javascript 日期联动选择器”的攻略。 1. 简介 javascript 日期联动选择器是一种基于javascript的日期选择器,用户可以通过该日期选择器选择年、月、日。此日期选择器的主要特点是具有联动效果,可以自动判断月份的天数,具有良好的用户体验。 2. 实现思路 该日期选择器的实现思路如下:- 首先在html中定义3个sele…

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