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

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

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种举例完成,希望能帮助到你.感谢阅读

相关推荐
小李云雾5 分钟前
深入浅出 Vue 3 核心知识点:从基础到实战
前端·javascript·vue.js·程序人生
Cobyte7 分钟前
16.响应式系统比对:链表如何实现 computed 的高效更新
前端·javascript·vue.js
一天 24h13 分钟前
Pinia 新手完全指南:从入门到精通的实战教程
前端·javascript·vue.js·pycharm·前端框架
向日的葵00614 分钟前
快速了解vue中的路由如何实现(路由一)
前端·vue.js·vue·路由
珎珎啊14 分钟前
React 和 Vue 3的区别
前端·vue.js·react.js
shadow_glory19 分钟前
vue3自定义指令directives
前端·javascript·vue.js
薛先生_09925 分钟前
vue-路由模块封装
前端·javascript·vue.js
薛先生_09926 分钟前
vue-router-link实现导航高亮效果
前端·javascript·vue.js
风吹夏回1 小时前
Vue 3 路由使用完全指南
前端·vue.js
whatever who cares1 小时前
完整的Vue3项目文件结构
vue.js