javascript 如何从type=file输入中删除“未选择文件”?

bprjcwpo  于 2023-04-19  发布在  Java
关注(0)|答案(9)|浏览(220)

我似乎找不到任何方法来删除“未选择文件”文本,该文本显示在输入类型“文件”旁边。
你们知道怎么删除这段文字吗

sczxawaw

sczxawaw1#

input[type='file'] {
  color: transparent;
}

好好享受

gv8xihay

gv8xihay2#

没有跨浏览器的方式来做到这一点。“no file selected”文本是在widget的实现定义部分,我不相信大多数浏览器提供了很多特定于浏览器的自定义方式。另一方面,当value属性为空时,您可以简单地使用CSS来覆盖文本。

af7jpaap

af7jpaap3#

您可以通过定义输入的宽度并隐藏超出的内容(不需要的“No file selected”文本)来完成此操作。

input {
    width: 132px;
    overflow:hidden;
}

Here is the demonstration on jsfiddle
注意:每种语言都有自己的默认文本,它可能会呈现不同的输入大小。In brazilian portuguese 132 px宽度是好的!
我的答案是基于this similar question on stackoverflow

qrjkbowd

qrjkbowd4#

您可以使用带有此问题答案的按钮替换文件字段:不带输入字段的文件上传按钮?

mf98qq94

mf98qq945#

CSS
<style>
#image_file{
   position: relative;
   width: 188px;
   border: 1px solid #BBB;
   margin: 1px;
   cursor: pointer;
   float: left;
  }
</style>

HTML
<input id="image_file" onclick="getFile()" onfocus="this.blur()" value=""/>
<div style='height: 0px;width: 0px; overflow:hidden;'>
    <input type="file" id="PinSpot_file">
</div>
<input type="button" onclick="getFile()" style="background-color: #DDD;" value="Browser" >

JAVASCRIPT
function getFile(){
   document.getElementById("PinSpot_file").click();
 }

// Event when change fields
$('#PinSpot_file').live('change', function(e) {     
  var file = this.value;
  var fileName = file.split("\\");
  document.getElementById("image_file").value = fileName[fileName.length-1];

   //AJAX
}
vlju58qv

vlju58qv6#

这是一个非常好的黑客和它的很多清洁。

超文本标记语言

<div id="file_info' style='display:inline;'>Browse</div>
<input type="file" name='file[]' multiple style='opacity: 0;' onchange='displayFileName()'/>

JS

function displayFileName() {
    var files = $('input[type="file"]')[0].files;
    document.getElementById('file_info').innerHTML = files.length + " images to upload";`
}
euoag5mw

euoag5mw7#

好吧,因为没有办法完全禁用文本,我建议要么在文本上放置一个元素,要么尝试以下解决方案。

CSS

input[type="file"] {
width: 90px; /* Keep it under 100px in order to hide the unwanted text. */
}

并向元素添加一个html inline-title属性,以隐藏“No File Chosen”悬停文本。

超文本标记语言

<input type="file" id="FileId" title="">

或者,你可以用JavaScript来完成这一切。

JS

document.addEventListener('DOMContentLoad', myFunction);

function myFunction() {
const FilePicker = document.getElementById('FileId');
FilePicker.style.width = "90px";
FilePicker.title = ""; // Leave This Empty
}
ef1yzkbh

ef1yzkbh8#

我认为你不能。你可以使用css来隐藏标签“没有文件选择”通过减少输入文件控制的宽度。我已经使用下面的代码来为自己做

CSS代码

input[type=file] {
    width: 93%;
}
dly7yett

dly7yett9#

你可以试试这个。它的工作为我火狐浏览器

<style type="">
    input[type='file'] {
       color: transparent;
    }
</style>

相关问题