【问题标题】:Capture and display a text from a hidden input从隐藏的输入中捕获并显示文本
【发布时间】:2017-11-19 08:33:45
【问题描述】:

我使用this solution 来更改<input type="file" />. 的按钮文本 它可以工作,但它有一个小缺点 - 选择文件后用户将看不到选择了什么文件,因为此信息不显示(它用原始按钮隐藏)。如何在不显示原始(隐藏)按钮的情况下使此信息可见?

代码:

<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>

【问题讨论】:

标签: javascript html input


【解决方案1】:

您可以创建一个没有文本的span,然后将update 的值设置为input 文件类型的值。类似的东西

function showFileName(){
document.getElementById("fileName").innerHTML = document.getElementById("file").files[0].name

}
<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" />
<span id="fileName"></span>
<input type="file" onChange="showFileName()" style="display:none;" id="file" name="file"/>

【讨论】:

  • 这行得通。唯一的问题是所选文件名之前的“C:\fakepath\”部分。我在 Ubuntu 中工作,所以我不知道在 Windows 系统中会显示什么。可以只保留文件名(带扩展名)吗?
  • 这在两种环境中都是一样的。无论如何,我已经编辑了代码以仅打印文件名。
  • @lurie,如果答案解决了您的问题,请接受并投票赞成
  • 很高兴知道这一点:)
【解决方案2】:

您可以在可见输入下添加占位符元素:

<p id="file_path"></p>

然后(我在这部分使用jQuery),事件方面:

​$('#file').change
(
    function(e)
    {
        $('#file_path').text(e.target.files[0]);
    }
);​​​

【讨论】:

  • 我无法让它工作。我在开发者工具控制台中收到这条消息:Uncaught SyntaxError: Invalid or unexpected token
  • 对不起,我修好了:O
猜你喜欢
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 2013-09-12
  • 2016-11-04
相关资源
最近更新 更多