提问者:小点点

如何在标签上显示输入字段“名称”


我有一个输入上传一个图像和一个标签,显示在输入顶部。 我在输入顶部添加标签的原因,这样我可以显示我想要的样式,并添加自定义文本。

在输入(如果删除css,display:none;对于#uploadimg)中,有一个字段“name”,该字段不显示选定的文件,当图像上传时,它将显示图像的名称。

但是,当我“display:none”输入时,“name”字段也会消失。 有没有一种方法可以显示“名称”字段? 我尝试添加label name=“uploadimg”,但似乎不起作用。

当名称字段输入为“显示无”时,是否有方法显示该字段输入? 如果不是,如何解决这个问题?

null

.upload {
    background-color: purple;
    padding: 12px 10px;
    border-radius: 3px;
    color: white !important;
    cursor: pointer;
    font-size: 16px !important;
    text-align: center;
    width: 100%;
}

#uploadImg {
    display: none;
}
<label class="upload" for="uploadImg">Upload Image</label>
<input type="file" name="uploadImg" id="uploadImg" value="test" accept=".jpg,.png">

null


共2个答案

匿名用户

您可以添加一些javascript来帮助您完成此任务,添加带有类的span,然后在输入中添加onchange,如下所示

<label class="upload" for="uploadImg">Upload Image</label>
<span class="fileName">No file chosen</span>
<input type="file" name="uploadImg" id="uploadImg" onchange="fileChanged(this)" 
value="test" accept=".jpg,.png">

然后添加一些javascript

<script type="text/javascript">
  function fileChanged(input) {
    let fileName = document.querySelector('.fileName');
    fileName.textContent = input.files[0]['name'];
  }
</script>

你的CSS不需要改变!

匿名用户

.upload {
    background-color: purple;
    padding: 12px 10px;
    border-radius: 3px;
    color: white !important;
    cursor: pointer;
    font-size: 16px !important;
    text-align: center;
    width: 100%;
}

#uploadImg {
    opacity:0;
}