基于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)
上一篇 2021年10月11日 下午7:00
下一篇 2021年10月11日 下午7:00


相关推荐

  • 心脏出血(Heartbleed)漏洞浅析、复现

    心脏出血(Heartbleed)漏洞浅析、复现一、漏洞介绍心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还

    2022年7月16日
    167
  • 0xc0000225无法进系统_电脑无法启动,出现0xc0000225一到错误,该怎样解决!

    0xc0000225无法进系统_电脑无法启动,出现0xc0000225一到错误,该怎样解决!展开全部根据系统提示是引导选择失败,因为需要的设备不可访问。由此可知,可e69da5e887aa3231313335323631343130323136353331333363386666能是硬盘或者引导有故障。可依照以下步骤进行一一排查并修复。第一步,制作一个U盘启动盘,1、事先准备4G以上U盘一个,网上下载pe软件(譬如大白菜、u当家、老毛桃等等)程序。2、首先要把U盘制成pe启动盘,百度搜索…

    2022年6月26日
    66
  • vue项目解决跨域问题_跨域的解决方案

    vue项目解决跨域问题_跨域的解决方案在项目根目录下新建vue.config.js文件,里面内容如下module.exports={devServer:{proxy:{‘/api’:{target:’http://localhost:8080/’,//跨域请求地址changeOrigin:true,//开启代理,是否实现跨域pathRewrite:{.

    2022年10月1日
    6
  • Windows 端口占用解决

    Windows 端口占用解决1Windows 端口占用解决 1 1Win R 快捷键打开调出运行窗口然后输入 cmd 打开命令窗口 1 2 查看占用端口的进程 PID 以端口 1080 为例 输入命令 netstat aon findstr 1080 1 3 根据占用进程 PID 得到占用进程名称输入命令 tasklist findstr 10860 10860 为占用进程 PID1 4 强行终止占用进程

    2026年3月26日
    2
  • 如何配置Linux系统的IP地址?

    如何配置Linux系统的IP地址?

    2022年2月15日
    66
  • IdeaVim插件使用技巧「建议收藏」

    IdeaVim插件使用技巧「建议收藏」在 IDEAIntellij小技巧和插件 一文中简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件在日常编程中的一些常用小技巧。供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考。当然基本的hjkl移动光标和几种常见模式等等基本概念就略过不提了。 为了确保只包含常用操作,这里提到的技巧都没有从现成文档里抄,而是凭记忆列出(不常用自然就不记得了)。估计会有所遗漏,慢慢再补

    2022年9月30日
    5

发表回复

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

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