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

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

demo例子:

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

 

依赖文件 :

 

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>
复制代码

 

 
 
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113773.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 恶意软件&quot;跨平台&quot; 小心钱包很受伤

    恶意软件&quot;跨平台&quot; 小心钱包很受伤

    2022年1月5日
    42
  • ArcGIS10地理信息系统教程—从初学到精通—笔记(持续更新)

    ArcGIS10地理信息系统教程—从初学到精通—笔记(持续更新)arcgis10初学到精通—重要操作整理第二章ArcGIS快速入门1.设置相对路径37页2.选择要素48页3.超链接51页4.测量第三章地理数据库geodatabase有以下三种类型:文件地理数据库,个人地理数据库、arcsed数据库文件数据库:以文件夹的形式保存、管理。文件数据库可以由多个用户使用,但是同一数据在同一时间只能由一个用户编辑。个人…

    2022年6月16日
    40
  • ToStringBuilder 学习

    ToStringBuilder 学习一、简介与引入1、ToStringBuilder、HashCodeBuilder、EqualsBuilder、ToStringStyle、ReflectionToStringBuilder、CompareToBuilder等这些类都是位于commons-lang.jar下面的,所以要使用这些类一定要导入commons-lang.jar。2、为什么要使用ToStringBuilder?…

    2025年6月15日
    0
  • ps基础快捷键_ps确定的快捷键

    ps基础快捷键_ps确定的快捷键ps快捷键常用表,ps快捷键大全!天下武功,唯快不破!看完这篇PS快捷键使用指南,帮你掌握最常用的32个Photoshop快捷键!注:左上为Mac快捷键,右上为PC快捷键1、Command+T:自由变形该快捷键,主要对图层进行旋转、缩放等变形调整,同时可以拖动修改图层在画面中的位置,是极为常用的功能键。2、Command+J:复制图层对图层的复制,一般的操作是通过图层菜单栏选择,或者…

    2022年9月29日
    0
  • Burp Suite抓包使用步骤「建议收藏」

    Burp Suite抓包使用步骤「建议收藏」原创https://www.cnblogs.com/mihoutao/p/11690432.html金龟子大战猕猴桃BurpSuite抓包工具的操作步骤见安装步骤那篇博客检查是否存在漏洞,就看拦截之后修改过的数据是否写进了数据库举例一、上传文件1、打开Burp.调整Proxy-Intercept-Interceptison为‘Interceptisoff’(拦截器开关)2、在火狐中打开需要拦截的网页,(比如同charlse博客里面写到的上传1.txt文件),点击上传文件按钮3、回

    2022年4月30日
    304
  • python产生随机数的方法_产生随机数的函数

    python产生随机数的方法_产生随机数的函数Python产生随机数:一.Python自带的random库1.参生n–m范围内的一个随机数:random.randint(n,m)2.产生0到1之间的浮点数:random.random()3.产生n—m之间的浮点数:random.uniform(1.1,5.4)4.产生从n—m间隔为k的整数:random.randrange(n,m,k)5.从序列中随机选取一个元素:random.choice([1,2,3,4,5,6,7

    2022年10月4日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号