我正在编写一个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());
});
});
答案 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/