输入类型文件如果隐藏则不起作用

Ne *_* AS 1 html javascript css angular

我想自定义我的input type file按钮.为此,我把它放在一个span并设置visibilityhidden.

     <span class="btn btn-default" flow-btn>
        Please choose a file
      <input type="file"style="visibility: hidden; position: absolute;"></span>
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我点击跨度时,没有任何反应,但当我visibility: hidden从中删除时style,则会显示选择文件弹出窗口.

input type="file"即使它隐藏了,我怎么能得到相同的结果呢?

  <span class="btn btn-default" flow-btn>
        Please choose a file
      <input type="file"style="visibility: hidden; position: absolute;"></span>
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 7

使用a <label>而不是<span>带有"for"属性来定位<input>.

 <label for="file-input" class="btn btn-default" flow-btn>
    Please choose a file
  <input id="file-input" type="file"style="visibility: hidden; position: absolute;"></label>
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,无需 for 即可工作,因为它已被包装 (3认同)

mxi*_*xii 6

以有角度的方式进行:

<span class="btn btn-default" flow-btn (click)="fInput.click()">Please choose a file</span>
<input #fInput type="file"style="visibility: hidden; position: absolute;" (change)="onFilesAdded($event)">
Run Code Online (Sandbox Code Playgroud)
  • 为您的隐藏输入创建一个本地模板变量,名为fInput
  • 将 -event添加click到您的范围,然后单击您的隐藏输入
  • change-event 添加到文件输入以处理模板内的文件