0

我正在编写一个 jquery/javascript 应用程序。我需要的一部分是文件输入,我需要在 Firefox、Chrome 和(呃)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());
    });
});
4

2 回答 2

0

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

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

于 2013-05-03T14:53:08.650 回答
-1

检查这个:

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

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

于 2013-05-03T15:06:34.807 回答