gpt4 book ai didi

javascript - 用 CSS 和一点 JS 来设计输入类型文件的样式,这样可以吗?

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:36 26 4
gpt4 key购买 nike

我想做的是添加一个用于上传文件的按钮,我可以设置样式并显示所选文件的名称。

我搜索了很多,我搜索的越多,我发现的解决方案就越多。我发现,你不能直接设置输入的样式,因为你不能... :(。

最后,我从每个解决方案中挑选了一些,得出以下结论:

我在标签中为输入 [类型文件] 设置了一个跨度,并通过显示隐藏输入:无;。

现在我可以根据需要设置 span 的样式,单击它会调用输入。在最后的小 JS 中,获取输入的值(所选文件的名称是什么)并将其显示在样式按钮上的跨度文本中。

但看看你自己:

#input-file {
display: none;
}

.upload-btn {

display: block;
text-align: center;
margin: 20px auto 20px;
width: 50%;
height: 30px;
background-color: #fcff7f;
line-height: 30px;

}

.upload-btn:hover {
background-color: #c39d5a;
color: white;
cursor: pointer;
}
<label class="upload-btn">
<input type="file" id="input-file" onchange="changeText()" />
<span id="selectedFileName">Browse</span>
</label>


<script type="text/javascript">
function changeText() {
var y = document.getElementById("input-file").value;
document.getElementById("selectedFileName").innerHTML = y;
}
</script>

我想知道的是,这有什么问题?就我的理解而言,它非常简单,简单到我“还”不明白为什么我在互联网上找到的所有解决方案都更加困难。他们总是尝试使用不透明等虚假输入。

所以请有经验的人告诉我,我是否可以这样使用它,或者我必须改变它吗?为了什么?

谢谢 ;)以及很多英语不好的借口。

最佳答案

由于安全原因,此功能在浏览器中不可用。

查看此说明:https://stackoverflow.com/a/15201258/586051

只有 Firefox 浏览器允许。在 Firefox 中引用以下示例。

编辑:您可以通过这种方式获取所选文件的文件名:

EDIT2: 以下代码片段演示了文件上传按钮的样式。我们实际上是在伪造它,但最终用户不会知道。 ;)

EDIT3: fullPath 的附加值在评论中。

EDIT4: 添加了 <div> HTML 包装器

document.getElementById("customButton").addEventListener("click", function(){
document.getElementById("fileUpload").click(); // trigger the click of actual file upload button
});

document.getElementById("fileUpload").addEventListener("change", function(){
var fullPath = this.value; // fetched value = C:\fakepath\fileName.extension
var fileName = fullPath.split(/(\\|\/)/g).pop(); // fetch the file name
document.getElementById("fileName").innerHTML = fileName; // display the file name
}, false);
#fileUpload{
display: none; /* do not display the actual file upload button */
}

#customButton{ /* style the fake upload button */
background: yellow;
border: 1px solid red;
}
<div>
<input type="file" id="fileUpload"> <!-- actual file upload button -->
<button id="customButton">My Custom Button</button> <!-- fake file upload button which can be used for styling ;) -->
<span id="fileName"></span>
</div>

关于javascript - 用 CSS 和一点 JS 来设计输入类型文件的样式,这样可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com