Javascript 使用诱饵会破坏我在IE上的上传。为什么?

Javascript 使用诱饵会破坏我在IE上的上传。为什么?,javascript,jquery,html,ajax,upload,Javascript,Jquery,Html,Ajax,Upload,我正在使用它,即使在IE中也可以正常工作 当我试图使用诱饵隐藏Valums标记时,问题出现了 $('.control.addphoto:not(.controlactive)').live('click', function(){ $('#upload input[type=file]').click(); }); 因此,真正的输入是隐藏的,但单击我的控件会激活它。“选择文件”对话框在IE中显示得很好,但一旦我单击“确定”,文件上载就会失败(甚至无法到达服务器)。当我不使用诱饵时(即,

我正在使用它,即使在IE中也可以正常工作

当我试图使用诱饵隐藏Valums标记时,问题出现了

$('.control.addphoto:not(.controlactive)').live('click', function(){
    $('#upload input[type=file]').click();
});
因此,真正的输入是隐藏的,但单击我的控件会激活它。“选择文件”对话框在IE中显示得很好,但一旦我单击“确定”,文件上载就会失败(甚至无法到达服务器)。当我不使用诱饵时(即,当我直接点击输入时),它可以正常工作

在Chrome和Firefox中一切都很好

为什么会这样?我无法理解,因为这只是一个诱饵,它在调用实际输入。有线索吗?有没有办法让诱饵更“透明”

obs:刚刚发现诱饵在Opera上不起作用(不会打开对话框)。同样,直接点击输入也可以。既然我使用的是jquery(它被认为是交叉浏览器),这难道不应该起作用吗


编辑
  • Opera本质上不允许通过诱饵触发输入行为

  • 使用Kevin B的替代方案,我已经能够解决我的问题。另一方面,我仍然不知道为什么IE会出现这种情况,为了了解情况,我将继续回答这个问题


解决方法之一是使触发器元素不可见,但不隐藏,例如使其与后面的元素具有相同的背景色。然后你可以把它放在“诱饵”的顶部,这样看起来就像你在点击诱饵,而实际上你在点击文件输入。

为什么它可以在chrome和firefox上工作?(顺便说一句,你的解决方案确实很有趣)我不确定,我不认为这是可能的,因为触发锚定标记上的本机单击事件是不可能的。你如何隐藏输入?如果我使用display:none隐藏输入,那么click事件将不会触发在googlechrome中打开浏览对话框,但它总是在IE中打开,包括在8和9中。我正在制作一把小提琴来再现你的处境。除此之外,我还带来了对话!但不知何故,它不够“透明”,破坏了上传=/是的,这是真的。因为我用“可见性:隐藏”和“位置:绝对”来隐藏它