html的input file类型除了触发onchange事件以外还有什么方法能获取到文件信息?

发布于 2022-09-04 02:32:11 字数 174 浏览 15 评论 0

<input id="inputtest" type="file" accept="image/*"/>
这种方式发现在Android上有一个bug就是如果第二次选择的文件跟上一次是同一个文件,则不会触发onchange事件,如果第二次选择的文件跟上一次不是同一个文件,才会触发onchange事件。 请问如何解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

递刀给你 2022-09-11 02:32:12

上传之后不管成功与否都将input的值设为空, input.value = ""

谜兔 2022-09-11 02:32:12

完全遇到了一样的问题,
DOM结构一个btn、一个隐藏的input
btn点击事件触发input的change事件

$("#btn_file").change(function () {//btn_file为隐藏的input
   if($(this).val() == ''){//如果没有选择文件则不触发
       return false;
    }
   for(var i=0;i<this.files.length;i++){...}
   $(this).val('');//操作结束清空input中的内容
});
天暗了我发光 2022-09-11 02:32:12

正如你所说,都是同一个文件,资源又没更新,还要做什么更新呢?
onblur / onclick / ontouchstart 等应该都可行吧

淡淡绿茶香 2022-09-11 02:32:12

代码给你写了,他们都给你说了,我也实现了,你怎么不自己试试呢

onblur,onclick,onchange
ps:这个应该不用判断吧。第一次能获取就获取了。没有理解你的需求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <input type="file" onchange="if(this.value!=''){console.log(this.value);this.value='';console.dir(this)}">

    <script type="text/javascript">
        
    </script>
</body>
</html>

clipboard.png

や三分注定 2022-09-11 02:32:12

用FileReader对象:
var fileReader = new FileReader();对比每次的文件信息呗

橘和柠 2022-09-11 02:32:12

文件改变才会触发change事件,想要都触发的话,那就click

丑丑阿 2022-09-11 02:32:12

你的意思是如果同一个文件如果要上传两次,第二次不会触发onchange事件?如果是这样的话,就按照楼上说的,上传有返回之后,无论是不是成功都清空input。正常也应该清空的。至于其他的,感觉onchange够了。差不多能触发的方法大家都说了,onblur(这个好像不太合适),onclick比较好。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文