在 Vuejs 问题中使用按钮输入文件

Posted

技术标签:

【中文标题】在 Vuejs 问题中使用按钮输入文件【英文标题】:Using button for input file in Vuejs issue 【发布时间】:2020-11-19 06:16:52 【问题描述】:

我正在尝试使用一个按钮来触发输入文件。但是我在这里面临的问题是,每当我单击按钮时,它都会将我带到 http://localhost:3000/availability?vue-file-input= url 而不是打开文件选择器。请帮我找出哪里出错了。

<div class="vue-file-wrapper">
 <button class="vue-button" @click="document.getElementById('fileInput').click()">Choose&nbsp;File
 </button>
 <div> filename </div>
 <input
   type="file"
   ref="file"
   style="display:none"
   name="vue-file-input"
   id="fileInput"
   :disabled="user.availability"
   @change="onFileSelected"
 >
</div>

【问题讨论】:

请查看answer 【参考方案1】:

使用 Vue Refs 而不是查询 DOM,这应该可以正常工作:

<div class="vue-file-wrapper">
  <button class="vue-button" @click.prevent="$refs.file.click()">Choose&nbsp;File
  </button>
  <div> filename </div>
  <input
    type="file"
    ref="file"
    style="display:none"
    name="vue-file-input"
    id="fileInput"
    :disabled="user.availability"
    @change="onFileSelected"
  />
</div>

这是显示它有效的 jsfiddle:https://jsfiddle.net/Lgc5rnzs

【讨论】:

或者根本不使用按钮...参见例如bulma.io/documentation/form/file 证明,您可以将输入类型文件包装在仍然使用默认 html5 输入机制的“按钮”中。.. :) 我已经尝试了你上面的建议。它仍然是同样的问题。由于我们平台的样式,我需要使用按钮。 @user12763413 你试过我的答案了吗?它应该可以正常工作。 @hammed-oyedele 这里是你的答案的 jsfiddle,表明它有效:jsfiddle.net/sLmoyjv7 是的,我确实尝试过您的回答,这是同一个问题。无论我在 name="vue-file-input" 中尝试什么,它都会将我带到那个 url。如果我输入 name="file-input" 然后它会带我到localhost:3000/availability?file-input=

以上是关于在 Vuejs 问题中使用按钮输入文件的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 VueJS 和 BootstrapVue 禁用页面中的所有输入?

Vuejs表单未在“输入”时提交

vuejs 单选按钮组件

VueJS 计算属性未在 DOM 上更新

尝试在 VueJs 中禁用导航按钮时出错

我们如何在 vuejs 的 javascript 文件中定义的 vuejs 的 html 文件中调用函数而不在 html 文件中创建按钮?