基于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 树莓派串口调试助手_树莓派4b教程

    树莓派串口调试助手_树莓派4b教程原文链接:https://blog.csdn.net/itisyang/article/details/79968592最新的Raspbian串口连接没有数据输出使用ssh连接树莓派之后-sudoraspi-config-InterfacingOptions-Serial打开串口登录树莓派正常情况串口四根线连接:VCC-5VGND-GNDTX…

    2022年10月10日
    2
  • 【奇葩bug】微信小程序:Unit8Array is not defined[通俗易懂]

    【奇葩bug】微信小程序:Unit8Array is not defined[通俗易懂]【奇葩bug】微信小程序:Unit8Arrayisnotdefined在用微信小程序里的蓝牙模块,要给设备写入信息。结果报错:VM22:2MiniProgramErrorUnit8ArrayisnotdefinedReferenceError:Unit8Arrayisnotdefined报错原因:正确拼写是Uint8Array…难怪根本搜不到相关问题,幻视误人啊。(完全没有技术含量的bug,也没有耽误太多时间,但实在是让我感到哭笑不得……另外,关于ArrayBuffer

    2025年11月19日
    7
  • mac android 录屏软件,mac录屏怎么录内置声音?详细的解决方案[通俗易懂]

    mac android 录屏软件,mac录屏怎么录内置声音?详细的解决方案[通俗易懂]原标题:mac录屏怎么录内置声音?详细的解决方案mac录屏怎么录内置声音?大家使用Mac电脑最大的问题就是对操作系统的不熟悉,就像是刚接触Windows系统一样,开始都会有一定的不熟悉,其实并没有那么难。很多人会使用QuickTimePlayer工具来操作,但实际上很多人在实际上操作这个方法来录制屏幕的时候会没有声音,这种情况还挺多的。比如现在拥有一个场景:有一个很萌或者很有用的视频,无法下载到…

    2022年4月30日
    78
  • MySQL 5.7中添加,弃用或删除了服务器和状态变量和选项「建议收藏」

    MySQL 5.7中添加,弃用或删除了服务器和状态变量和选项

    2022年2月10日
    45
  • 第六章 zookeeper 原理,安装步骤,数据同步演示

    第六章 zookeeper 原理,安装步骤,数据同步演示第六章 zookeeper 原理,安装步骤,数据同步演示

    2022年4月23日
    68
  • 思科交换机 flow control 交换机流控[通俗易懂]

    思科交换机 flow control 交换机流控[通俗易懂]配置IEEE802.3X流控制流控制在直连的以太端口上启用,在拥塞期间允许另一端拥塞的节点暂停链路运作来控制流量速率。如果一个端口发生拥塞并且不能接收任何更多的流量,他将通知对端端口停止发送直到这种拥塞情况消失。当本地设备在他本地检测到了任何拥塞,他能够发送一个暂停帧通知链路伙伴或者远程设备已发生拥塞。紧随收到暂停帧之后,远程设备停止发送任何…

    2022年6月5日
    91

发表回复

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

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