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

时间:2011-10-18 15:14:02

标签: javascript jquery html ajax upload

我正在使用Valums AJAX Uploader,即使在IE中也能正常运行。

当我尝试使用诱饵隐藏Valums标记时,会出现问题。

$('.control.addphoto:not(.controlactive)').live('click', function(){
    $('#upload input[type=file]').click();
});

所以,真正的输入是隐藏的,但点击我的控件会激活它。 “选择文件”对话框在IE中显示得很好但是一旦我点击确定文件上传失败(它甚至没有到达服务器)。当我不使用诱饵时(即当我直接点击输入时)它可以正常工作。

Chrome和Firefox中的一切正常。

为什么会这样?我无法理解,因为它只是一个诱饵而且它正在调用实际输入。任何线索?什么方法使诱饵更“透明”?

obs:刚刚发现诱饵无法在Opera上运行(不会打开对话框)。再次,直接点击输入工作正常。不应该这样,因为我正在使用jquery(它被认为是crossbrowser)?


修改

  • Opera实际上不允许通过诱饵触发输入行为。

  • 使用Kevin B的替代方案,我已经能够解决我的问题了。另一方面,我仍然不知道为什么IE会发生这种情况,并会为了知识而打开这个问题。

1 个答案:

答案 0 :(得分:2)

对此的一个解决方案是使触发元素不可见,但不隐藏,例如为其提供与其后面的元素相同的背景颜色。然后,您可以将它放在“诱饵”的顶部,这样当您实际点击文件输入时,它看起来就像您点击诱饵一样。