如何让IE认识到这一点。在jquery中更改

时间:2013-05-03 14:47:27

标签: javascript jquery html

我正在编写一个jquery / javascript应用程序。我需要的部分是文件输入,我需要在Firefox,Chrome和(ugh)IE中看起来相同。我所做的是隐藏文件输入并在其上放置一个文本框。然后,我使用jquery .click使单击文本框与单击文件输入具有相同的效果,并使用.change使文件输入的内容显示在文本框中。在Firefox和Chrome中运行良好,但微软那些可怕的可怕的人想破坏我的一天。

如果有人有解决方案,我会非常感激哦。提前谢谢!

<input type="text" id="fakefile">
<input type="file" id="realfile">

$(document).ready(function(){
    $('#fakefile').click(function(){
        $('#realfile').click();
    });
    $('#realfile').change(function(){
        $('#fakefile').val($('#realfile').val());
    });
});

2 个答案:

答案 0 :(得分:0)

这是不可能的,你可以做一些hackyness并在文件输入中添加标签并触发标签上的点击而不是输入,但是一旦你尝试提交表单,它就会在IE中失败。

我解决问题的方法是将文件输入不透明度变为0并将其绝对定位在我希望用户认为他们正在点击的样式元素上。这样他们实际上是单击文件输入,即使看起来他们正在点击我的样式元素。

答案 1 :(得分:-1)

检查一下:

$(document).ready(function(){
    $('#fakefile').click(function(){
        $('#realfile').click();
    });
    $('#realfile').bind("change click", function(){
        $('#fakefile').val($('#realfile').val());
    });
});

jsfiddle:http://jsfiddle.net/deAf6/