基于VUE选择上传图片并页面显示(图片可删除)


Posted in Javascript onMay 25, 2017

基于VUE选择上传图片并在页面显示,图片可删除,具体内容如下

demo例子:

基于VUE选择上传图片并页面显示(图片可删除)

依赖文件:jqueryform

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(‘提交成功');
 }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>

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

Javascript 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
Feb 07 Javascript
解决遍历时Array.indexOf产生的性能问题
Jul 03 Javascript
yepnope.js使用详解及示例分享
Jun 23 Javascript
基于JavaScript获取鼠标位置的各种方法
Dec 16 Javascript
jQuery Mobile和HTML5开发App推广注册页
Nov 07 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
JS简单获取并修改input文本框内容的方法示例
Apr 08 Javascript
Vue 进阶之路(三)
Apr 18 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 #jQuery
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 #Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
May 25 #Javascript
vue-router实现webApp切换页面动画效果代码
May 25 #Javascript
Angular 2.x学习教程之结构指令详解
May 25 #Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
May 25 #Javascript
js获取一组日期中最近连续的天数
May 25 #Javascript
You might like
10条PHP编程习惯助你找工作
2008/09/29 PHP
PHP Stream_*系列函数
2010/08/01 PHP
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python分布式环境下的限流器的示例
2017/10/26 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python自动生成model文件过程详解
2019/11/02 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
python中操作文件的模块的方法总结
2021/02/04 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
机械工程系毕业生求职信
2013/09/27 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
保密承诺书范文
2014/03/27 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
商标侵权律师函
2015/05/27 职场文书
三八妇女节致辞
2015/07/31 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android