【问题标题】:How to bind click function of a file input to a "v-on" event?如何将文件输入的点击功能绑定到“v-on”事件?
【发布时间】:2016-12-12 21:47:06
【问题描述】:

我试图在 Vue.js 中编写一个漂亮的上传器。我只是隐藏 <input type="file"> 元素并在单击 mdl 按钮时触发单击功能。

以下代码是我的实现。

模板:

<form method="post" action="#" @submit.prevent="">
  <input id="fileInput" type="file">
  <mdl-button type="submit" @click="onClick" colored raised>
    <span>Upload</span>
  </mdl-button>
</form>

脚本:

export default {
  data () {
    return {
      filePath: null
    }
  },
  methods: {
    onClick: function (e) {
      document.getElementById('fileInput').click()
    }
  }
}

风格:

#fileInput {
  display: none;
}

我们可以注意到document.getElementById 不是 Vue 风格的。

如何将fileInput的点击函数绑定到mdl-button的点击事件?

【问题讨论】:

    标签: javascript dom vue.js


    【解决方案1】:

    您可以简单地将您的mdl-button 变成&lt;label&gt; 标签。这将使它在语义上更有价值和更易于访问:

    <form method="post" action="#" @submit.prevent="">
      <input id="fileInput" type="file">
      <mdl-button type="submit" colored raised>
        <label for="fileInput">Upload</label>
      </mdl-button>
    </form>
    

    我不确定您的 &lt;mdl-button&gt; 组件包含哪种标记,但您可能只想将用作按钮元素的任何内容替换为 &lt;label&gt; 元素。

    【讨论】:

    • 仅在您点击标签时有效。点击mdl-button,文件选择窗口不弹出。
    • 嗯,是的,正如我所写,您可能需要将&lt;mdl-button&gt; 的基本元素替换为标签。由于我不知道mdl-button 长什么样,我不知道这是否可能……
    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2017-11-12
    • 2011-09-17
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多