基于VUE选择上传图片并在页面显示(图片可删除)
demo例子:

依赖文件 :
http://files.cnblogs.com/files/zhengweijie/jquery.form.rar
HTML文本内容:

<template>
<div id="accident">
<div class="wrapper">
<i class="icon-pic"></i>相关照片
<button type="button" @click="change_input()">上传照片</button>
<form id="addTextForm" @change="setImg($event)">
</form>
</div>
<div id="img-wrapper" @click="deleteImg($event)"></div>
<P class="btn-wrapper">
<mt-button type="primary" @click="submit()">提交</mt-button>
</P>
</div>
</template>

JS文本内容:

<script>
/**
* 从 file 域获取 本地图片 url
*/
function getFileUrl(obj) {
let url;
url = window.URL.createObjectURL(obj.files.item(0));
return url;
} export default {
name: 'accident',
// 定义数据
data () {
return {
imgNum:4, //上传的照片数量,可根据实际情况自定义
}
},//定义事件
methods:{
//根据点击上传按钮触发input
change_input(){
let inputArr=$('#addTextForm input');
let add_inputId=''; //需要被触发的input
for(let i=0;i<inputArr.length;i++){
// 根据input的value值判断是否已经选择文件
if(!inputArr[i].value){ //如果没有选择,获得这个input的ID
add_inputId=inputArr[i].id;
break;
}
}
if(add_inputId){ //如果需要被触发的input ID存在,将对应的input触发
return $("#"+add_inputId).click();
}else{
alert("最多选择"+this.imgNum+"张图片")
}
},
//当input选择了图片的时候触发,将获得的src赋值到相对应的img
setImg(e){
let target=e.target;
$('#img_'+target.id).attr('src',getFileUrl(e.srcElement));
},
//点击图片删除该图片并清除相对的input
deleteImg(e){
let target=e.target;
let inputID=''; //需要清除value的input
if(target.nodeName=='IMG'){
target.src='';
inputID=target.id.replace('img_',''); //获得需要清除value的input
$('input#'+inputID).val("");
}
},
//提交信息到后台
submit(){
$("#addTextForm").ajaxSubmit({
url: this.$root.api+"/Index/staff_accident/add",
type: "post",
data: {
'total_price':this.price,
'descript':this.descript,
},
success: (data) => {
if(data.code==0){
console.log(‘提交成功’);
$("#addTextForm input").val('');
$('div#img-wrapper img').attr('src','');
}else{
alert('提交失败');
}
}
});
}
},
//页面加载后执行
mounted(){
for(let i=0;i<this.imgNum;i++){
//生成input框,默认为1
let my_input = $('<input type="file" name="image" />'); //创建一个input
my_input.attr('id',i); //为创建的input添加id
$('#addTextForm').append(my_input); //将生成的input追加到指定的form
//生成img,默认为1
let my_img = $('<img src="">');
my_img.attr('id', 'img_'+i);
my_img.css({"max-width":"50%","max-height":"200px"}); //添加样式,由于vue的执行机制,页面加载的时候img标签还没有生成,直接写在style样式会不生效
$('#img-wrapper').append(my_img);
}
},
}
</script>

基于VUE选择上传图片并在页面显示(图片可删除)的更多相关文章
- 【js】【图片显示】js控制html页面显示图片方式
js控制html页面显示图片方式,只需要引入“jquery-1.11.2.min.js” js: /* 引用 <script src="jquery-1.11.2.min.js&quo ...
- 基于Vue的SPA动态修改页面title的方法
最近基于VUE做个SPA手机端web发现动态修改页面标题通过document.title=xxxx 来修改着实蛋疼,而且在IOS的微信端据说没效果.百度发现要针对IOS的微信做点额外的操作,即:创建一 ...
- 关于springmvc 只能在index.jsp页面显示图片的处理办法jsp页面无法显示图片
首先,已经配置好了mvc对静态资源的处理 只有index,jsp可以显示图片 其他页面同样的代码则不显示 后来折腾了半天,发现 index是static的父目录的级别文件 可以向下访问 但是其他的js ...
- 基于Vue的SPA如何优化页面加载速度
常见的几种SPA优化方式 减小入口文件体积 静态资源本地缓存 开启GZip压缩 使用SSR ..... 减小入口文件体积,常用的手段是路由懒加载,开启路由懒加载之后,待请求的页面会单独打包js文件,使 ...
- 【Vue中的坑】vue项目中动态绑定src不显示图片解决方法
v-for绑定src的数据如下: data() { return { img_src:"../../assets/images/mirror-service.png" } } 渲染 ...
- spring mvc页面显示图片失败
在配置文件中需要映射静态资源 <!-- 当在web.xml 中 DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时, ...
- [YII2] 展示页面显示图片 以及手机号隐藏为*和姓名隐藏姓为*,
- 基于 Vue.js 2.0 酷炫自适应背景视频登录页面的设计『转』
本文讲述如何实现拥有酷炫背景视频的登录页面,浏览器窗口随意拉伸,背景视频及前景登录组件均能完美适配,背景视频可始终铺满窗口,前景组件始终居中,视频的内容始终得到最大限度的保留,可以得到最好的视觉效果. ...
- day112:MoFang:种植园使用websocket代替http&服务端基于flask-socketio提供服务&服务端响应信息&种植园页面显示初始化
目录 1.种植园使用websocket代替http 2.服务端基于socket提供服务 3.服务端响应信息 4.种植园页面展示 1.种植园使用websocket代替http 我们需要完成的种植园,是一 ...
随机推荐
- python 小脚本升级-- 钉钉群聊天机器人
一则小脚本(工作中用) 在这篇文章中写的监控的脚本,发送监控的时候 是利用的邮箱,其实在实际,邮箱查收有着不方便性,于是乎升级, 我们工作中,经常用钉钉,那么如果要是能用到钉钉多好,这样我们的监控成功 ...
- css3特效样式库
直接调用样式类即可: /* animation */ .a-bounce,.a-flip,.a-flash,.a-shake,.a-swing,.a-wobble,.a-ring{-webkit-an ...
- mayavi安装
Mayavi是python的一个包,提供方便的可视化方案.目前(20150809)Mayavi还没有py3的支持,以下安装环境在python 2.7.10下进行 安装Mayavi: 1. 通过pip ...
- Java容器---Map基础
1.Map API (1)Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值. java.util Interface Map<K ...
- 人工神经网络,支持任意数量隐藏层,多层隐藏层,python代码分享
http://www.cnblogs.com/bambipai/p/7922981.html------误差逆传播算法讲解 人工神经网络包含多种不同的神经网络,此处的代码建立的是多层感知器网络,代码以 ...
- jQuery 事件方法(二)
方法 描述 bind() 向匹配元素附加一个或更多事件处理器 blur() 触发.或将函数绑定到指定元素的 blur 事件 change() 触发.或将函数绑定到指定元素的 change 事件 cli ...
- TurnipBit—MicroPython开发板:妥妥拽拽零基础也能玩编程
可视化编程网站入口:www.turnipbit.com 说到编程.谈到硬件,你也许会想到屌丝逆袭女神的"传奇"故事,也许会浮现出带着眼镜.头发稀少.无精打采的程序猿形象." ...
- Python import其他层级的模块
[前言] Python的文件目录结构虽然层次清晰,结构清楚,但是在调用的时候可能还是出现各式各样的找不到路径的错误. [模块导入] 1.导入上一级目录的模块 python中导入上一级目录的模块有两种方 ...
- TCP网络编程-----客户端请求连接服务器、向服务器发数据、从服务器接收数据、关闭连接
SOCKET m_sockClient; unsigned short portNum; ------------------------------------------------------- ...
- 【高精度乘法】NOIP2003麦森数
题目描述 形如2^{P}-12P−1的素数称为麦森数,这时PP一定也是个素数.但反过来不一定,即如果PP是个素数,2^{P}-12P−1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的 ...