为什么iPhone的Safari触发器不会在input type = file上更改事件?

有一个iPhone,需要在隐藏的输入上捕获change事件。 在PC上打开时,它可以工作,我看到changed文本。 如果我在iPhone上打开它,它不能按预期工作,我只是看到open dialog

简单的jsfiddle演示了这一点 。

   

 $(document).ready(function(){ $('#but').on('click touchend', function(){ $('#out').text('open dialog'); $('#file').click(); }); $('#file').on('change', function(evt) { $('#out').text('changed'); }); }); 

它出什么问题了? 这是iOs的新bug吗? Afaik,它在一个月前就开始工作了。

我试图用opacity:0替换hidden opacity:0 ,它适用于简单的jsfiddle,但在隐藏侧边栏的复杂项目中不起作用。 问题如下。 如何进行简单的修复以及最近发生的变化(一些Safari更新?),导致隐藏输入行为的变化?

你可以使用label属性。 以下代码可能对您有所帮助:

 $('#file').on('change', function () { $('.button').text('changed') })