拖动上传组件内部自定义组件,保留拖动上传

遇到一个需求:拖动上传组件内部自定义组件保留拖动上传,其他上传方式取消(点击上传,有焦点回车上传)保留内容自定义组件.记录下

1.这里举例vue2+antdesign vue1.x(上传组件)+elementui2.12.0(内部组件输入框)保留拖动上传,可支持输入。

xml 复制代码
<a-upload-dragger  name="file" :multiple="false" accept="image/*" :file-list="[]" :custom-request="OCRVin" ref="uploadDragger">
    <div class="upload-overlay" @click.stop  @keydown.enter.stop="textareaEnter"> <!-- 覆盖点击事件 -->
         <el-input  type="textarea" v-model="searchValue" :rows="1" placeholder="请输入" resize="none">
         </el-input></div>
</a-upload-dragger>

css:

css 复制代码
.upload-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1; /* 确保覆盖在内容之上 */
    pointer-events: auto; /* 默认情况下,这个值可能是 none,但我们需要设置为 auto 来接收点击事件,然后通过 @click.stop 来阻止它冒泡 */
    /* 可以添加透明背景或其他样式来避免影响用户体验 */
    background-color: rgba(0, 0, 0, 0); /* 透明背景 */
  }

(vue->mothods)js:

scss 复制代码
textareaEnter(e){
    //阻止事件冒泡
    e.stopPropagation();
},

2.再举例vue3+element plus(可拖动上传的展示图片)

ini 复制代码
<el-upload
    v-model:file-list="fileList"
    class="uploadBigImg"
    ref="uploadFolder"
    accept="image/*"
    :show-file-list="false"
    list-type="picture"
    :http-request="uploadHttpRequest"
    drag
    @click.stop="()=>{}"
    @keydown.enter.stop="imgEnter"
    >
    <!-- 覆盖点击事件 -->
    <div class="upload-overlay" @click.stop >
       <div class="imgBox" @click.stop="changeFocus">
           <el-image class="bigImg" :src="currentImg.url" fit="contain" ref="bigImg"
                                :preview-src-list="[currentImg.url]" />
       </div>
    </div>
</el-upload>

css同上 js:

scss 复制代码
imgEnter(e){
  //阻止默认事件
  e.preventDefault();
  //阻止事件冒泡
  e.stopPropagation();
  return;
},

至此2种举例完成,希望能帮助到你.感谢阅读

相关推荐
Mr Xu_3 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
前端摸鱼匠3 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
未来之窗软件服务4 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
phltxy6 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
Byron07077 小时前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js
Byron07078 小时前
从 0 到 1 搭建 Vue 前端工程化体系:提效、提质、降本实战落地
前端·javascript·vue.js
zhengfei6118 小时前
【AI平台】- 基于大模型的知识库与知识图谱智能体开发平台
vue.js·语言模型·langchain·知识图谱·多分类
徐小夕@趣谈前端8 小时前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6
董世昌419 小时前
深度解析浅拷贝与深拷贝:底层逻辑、实现方式及实战避坑
前端·javascript·vue.js
扶苏10029 小时前
vue使用event.dataTransfer实现A容器数据拖拽复制到到B容器
前端·vue.js·chrome