微信小程序实现图片选择并预览功能


Posted in Javascript onJuly 25, 2019

本文实例为大家分享了微信小程序实现图片选择并预览的具体代码,供大家参考,具体内容如下

(一)、功能说明

做的是一个意见反馈,用户发表意见和上传图片,限制了最多只能上传三张图片。

其他要点:textarea使用,底部保存按钮固定

(二)、小程序接口说明

wx.chooseLocation(Object object)

从本地相册选择图片或使用相机拍照。

微信小程序实现图片选择并预览功能

(三)、效果图

效果如下:

 微信小程序实现图片选择并预览功能

(四)、代码展示

WXML页面:

<view class="wrap">
 <view class="contant_wrap">
 <view class="contant">
 <textarea name="bindTextAreaBlur" bindblur="bindTextAreaBlur" auto-height placeholder="请描述您的问题或意见(必填)" maxlength="600"/>
 </view>
 <view class="contant-pic">
 <view class="pics-list" wx:for="{{pics}}" wx:key="" >
 <image src="{{item}}" class="uploadImg"></image>
 <image src="../../images/delete.png" class="uploadImg-error" data-img="{{item}}" bindtap='deleteImg'></image>
 </view>
 <image src="../../images/uploadImg.png" class="uploadImg {{isShow?'true':'hideTrue'}}" bindtap='uploadImage' ></image>
 </view>
 </view>
 <view class="phone">
 <input name="inputPhone" bindinput="inputPhone" placeholder="您的手机号或者邮箱(选填)" />
 </view>
 <view class="phone">
 <input name="inputName" bindinput="inputName" placeholder="您的称呼(选填)" />
 </view>
 <view class="bottom" bindtap='submitAdvice'> 保存</view>
</view>

wxss页面:

page{
 background-color: #efefef;
}
.wrap{
 width:90%;
 margin-left:5%;
 margin-top:10px;
 font-size:15px;
}
.contant_wrap{
 background-color: #fff;
}
.contant{
 width: 94%;
 margin: 0 auto
}
textarea{
 min-height:300rpx;
 max-height: 300rpx;
 padding: 10rpx 0;
 width: 100%;
 
}
.contant-pic{
 width: 94%;
 margin: 0 auto;
 height:80px;
 
}
.pics-list{
 width:73px;
 height:73px;
 float:left;
 margin-right:6px;
 
}
.uploadImg{
 width:70px;
 height:70px;
}
.uploadImg-error{
 height:25px;
 width:25px;
 position:relative;
 top:-80px;
 left:55px;
}
.hideTrue {
 display: none
}
.true {
 display: block
}
input{
 margin-top: 30rpx;
 height: 80rpx;
 padding-left: 20rpx;
 background-color: #fff;
}
.placeholder{
 color: #999999;
 font-size: 12pt;
}
.bottom{
 width:100%;
 height:40px;
 background-color:#e64340;
 position:fixed; bottom:0;
 color:#ffff;
 text-align: center;
 line-height: 40px;
}

js中:

// pages/advice/advice.js
Page({
 
 /** 页面的初始数据*/
 data: {
 content:'',
 phone:'',
 name:'',
 advice:'',
 pics:[],
 isShow: true
 },
 /**获取textarea值:评论内容 */
 bindTextAreaBlur:function(e){
 this.setData({
 advice:e.detail.value
 })
 },
 /**获取手机或邮箱*/
 inputPhone: function (e) {
 this.setData({
 phone: e.detail.value
 })
 },
 /**获取称呼 */
 inputName: function (e) {
 this.setData({
 name: e.detail.value
 })
 },
 
 /**上传图片 */
 uploadImage:function(){
 let that=this;
 let pics = that.data.pics;
 wx.chooseImage({
 count:3 - pics.length,
 sizeType: ['original', 'compressed'], 
 sourceType: ['album', 'camera'], 
 success: function(res) {
 let imgSrc = res.tempFilePaths;
  pics.push(imgSrc);
 if (pics.length >= 3){
  that.setData({
  isShow: false
  }) 
 }
 that.setData({
  pics: pics
 })
 },
 })
 
 },
 
 /**删除图片 */
 deleteImg:function(e){
 let that=this;
 let deleteImg=e.currentTarget.dataset.img;
 let pics = that.data.pics;
 let newPics=[];
 for (let i = 0;i<pics.length; i++){
 //判断字符串是否相等
 if (pics[i]["0"] !== deleteImg["0"]){
 newPics.push(pics[i])
 }
 }
 that.setData({
 pics: newPics,
 isShow: true
 })
 
 },
 
 /**提交 */
 submitAdvice:function(){
 let that=this;
 let advice = that.data.advice
 let name=this.data.name
 let phone=this.data.phone
 let pics=this.data.pics
 //保存操作
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 插件开发 extjs中的extend用法小结
Jan 04 Javascript
小结Node.js中非阻塞IO和事件循环
Sep 18 Javascript
javascript html5摇一摇功能的实现
Apr 19 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
Aug 09 Javascript
clipboard在vue中的使用的方法示例
Oct 19 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
Mar 11 Javascript
JavaScript解析JSON数据示例
Jul 16 Javascript
js实现简单的打印表格
Jan 15 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 Javascript
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 #Javascript
微信小程序绘制图片发送朋友圈
Jul 25 #Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 #Javascript
微信小程序实现动态列表项的顺序加载动画
Jul 25 #Javascript
JS查找孩子节点简单示例
Jul 25 #Javascript
微信小程序自定义单项选择器样式
Jul 25 #Javascript
vue实现多组关键词对应高亮显示功能
Jul 25 #Javascript
You might like
PHP输出九九乘法表代码实例
2015/03/27 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
Javascript的this用法
2017/01/16 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
js实现烟花特效
2020/03/02 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
Python中tell()方法的使用详解
2015/05/24 Python
Django开发中的日志输出的方法
2018/07/02 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
学习python需要有编程基础吗
2020/06/02 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
公证委托书大全
2014/04/04 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
python析构函数用法及注意事项
2021/06/22 Python
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫
MySQL学习必备条件查询数据
2022/03/25 MySQL
Redis+AOP+自定义注解实现限流
2022/06/28 Redis
详解flex:1什么意思
2022/07/23 HTML / CSS