基于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 相关文章推荐
javascript自定义startWith()和endWith()的两种方法
Nov 11 Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 Javascript
如何编写高质量JS代码
Dec 28 Javascript
JS限制文本框只能输入数字和字母方法
Feb 28 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
Aug 03 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
May 23 Javascript
微信小程序之数据缓存的实例详解
Sep 29 Javascript
vue配置多页面的实现方法
May 22 Javascript
详解angular应用容器化部署
Aug 14 Javascript
Vue 中的受控与非受控组件的实现
Dec 17 Javascript
javascript解析json格式的数据方法详解
Aug 07 Javascript
Vue Element校验validate的实例
Sep 21 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
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
python for和else语句趣谈
2019/07/02 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
python3实现绘制二维点图
2019/12/04 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
python 写一个水果忍者游戏
2021/01/13 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
食堂员工工作职责
2013/12/18 职场文书
房屋租赁协议书
2014/10/18 职场文书
董事长秘书工作总结
2015/08/14 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript