jquery.fileEveryWhere.js--一个跨浏览器的file显示插件[原]

简介: 大牛ppk都说过,在从多表单控件中,上传文件控件的样式是最难以控制的。见文章Styling an input type="file"。本插件也多是参考此文。 先来看看input type="file"在chrome,ie,firefox这三个浏览器下表情各异吧。

大牛ppk都说过,在从多表单控件中,上传文件控件的样式是最难以控制的。见文章Styling an input type="file"。本插件也多是参考此文。

先来看看input type="file"在chrome,ie,firefox这三个浏览器下表情各异吧。

 

 

 

chrome像是button+label组合,看起差异最大。

ff和ie,是text+button的组合,就外形来看,firefox更标准,事实上firefox存在两个潜在问题:

 1,firefox对type="file" 的input的width定义目前是不支持的(但是FF支持size属性,可以给size设置一个值,来控制上传框的大小,至于这个size到底是多大,见文章繁花-firefox下input type="file"的size是多大)。 

 2,火狐浏览器的提交file表单时只提交文件名不提交路径,而IE提交的是路径+文件名,chrome也能提交路径+文件名,但只显示文件名。火狐浏览器的提交file表单时只提交文件名不提交路径(很遗憾,暂时没有解决方法)

 

要让file在各个浏览器显示统一,纯样式已经控制不了,只能用js脚本了。基本步骤有3:

 1,通过文本框和按钮去模拟一个input type=”file”。

 2,把input="file"做成透明,用定位完全盖住文本框和按钮。

 3,当input type=”file”的onchange的时,用js将文本框的值设置成input type=”file”的值。

 

了解步骤后,整个插件就很好写了,代码如下:


 /*

* file everywhere - 浏览器通用文件上传
* copyright->flowerszhong
* flowerszhong@gmail.com
* http://www.cnblogs.com/flowerszhong/
*/
(function($) {
    $.fn.fileEveryWhere = function(options) {
        
var defaults = {
            WrapWidth: 300,
            WrapHeight: 30,
            ButtonWidth: 60,
            ButtonHeight: 28,
            ButtonText: "浏览",
            TextHeight: 28,
            TextWidth: 240
        };
        
var options = $.extend(defaults, options);
        
var browser_ver = $.browser.version.substr(01);
        
var displayMode = ($.browser.msie && browser_ver <= "7"? "inline" : "inline-block";
        
return this.each(function() {
            
//创建包含,设置为相对定位
            var wrapper = $("<div class='fileWraper'>")
                            .css({
                                
"width": options.WrapWidth + "px",
                                
"height": options.WrapHeight + "px",
                                
"display": displayMode,
                                
"zoom""1",
                                
"position""relative",
                                
"overflow""hidden",
                                
"z-index":"1"
                            });
            
//创建文本输入框,用于存放上传文件名称
            var text = $('<input class="filename" type="text" />')
                             .css({
                                 
"width": options.TextWidth + "px",
                                 
"heigth": options.TextHeight + "px"
                             });
            
//创建浏览按钮
            var button = $('<input class="btnfile" type="button" />')
                            .val(options.ButtonText);
            $(this).wrap(wrapper).parent().append(text, button);
            $(this).css({
                
"position""absolute",
                
"top""0",
                
"left""0",
                
"z-index""2",
                
"height": options.WrapHeight + "px",
                
"width": options.WrapWidth + "px",
                
"cursor""pointer",
                
"opacity""0.0",
                
"outline":"0",
                
"filter""alpha(opacity:0)"
            });
            
if ($.browser.mozilla) { $(this).attr("size"1 + (options.WrapWidth - 85/ 6.5) }
            $(this).bind("change"function() {
                text.val($(this).val());
            });
        });
    };
})(jQuery);

使用很简单:

 $("input:file").fileEveryWhere({参数});

这样就可以统一显示input="file",并且易于美化。 

下载该插件:/Files/flowerszhong/jquery.fileEveryWhere.rar 

 感谢你留言,转载请声明出处(http://www.cnblogs.com/flowerszhong/)。 

相关文章
|
10天前
|
Web App开发 前端开发 JavaScript
折腾之王:JavaScript之父Brave浏览器与BAT的诞生
2015年,JavaScript之父Brendan Eich再次创业,推出Brave浏览器和加密货币Basic Attention Token(BAT),旨在颠覆传统广告行业。Brave屏蔽广告、保护隐私,加载速度快;BAT则通过奖励机制让用户、内容创作者和广告主三方受益。尽管面临用户习惯和巨头竞争的挑战,Brave已拥有超4000万月活跃用户,成为全球增长最快的隐私浏览器,引领Web3生态发展。
78 22
折腾之王:JavaScript之父Brave浏览器与BAT的诞生
|
11天前
|
Web App开发 搜索推荐 开发者
浏览器插件上架指南:如何把你的产品搬上浏览器插件市场
在实践了 Chrone、Firefox、Edge、Opera 等 几个主要的插件平台的上架发布工作后,我觉得很有必要把这个过程和思考记录下来,分享给大家,希望能提供一些参考和避坑的经验。我想通过这篇文章,和大家聊聊「为什么我要做这件事」,以及「这个系列文章会包含哪些内容」。我想用一个系列的文章,记录我是如何把 EmojiClick 搬到浏览器插件市场的,也给大家提供一些借鉴经验。
69 19
|
16天前
jQuery+Slick插件实现游戏人物轮播展示切换源码
jQuery+Slick插件实现游戏人物轮播展示切换源码
33 14
|
1月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
1月前
|
JavaScript 前端开发
jQuery和CSS3滑动展开菜单按钮插件
这是一款jQuery和CSS3滑动展开菜单按钮插件。该滑动展开菜单按钮在用户点击主菜单按钮之后,子菜单以滑动的方式依次展开
64 21
|
1月前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
54 16
|
1月前
|
JavaScript
jquery文字动画特效插件animatext
jquery文字动画特效插件animatext
48 9
|
1月前
|
移动开发 JavaScript 前端开发
简单易用的jquery响应式轮播图插件ma5slider
ma5slider是一款简单易用的jquery响应式轮播图插件。该轮播图支持鼠标拖拽,可以通过CSS定制外观,支持无限循环模式,内置水平,垂直和淡入淡出三种轮播图过渡动画效果。
|
1月前
|
JavaScript
简洁实用的jQuery进度条插件
这是一款简洁实用的jQuery进度条插件。该插件使用简单,通过在页面中放置指定的HTML代码,即可生成带动画效果的进度条。
|
1月前
|
JavaScript 容器
jQuery文字跑马灯插件Marquee
jQuery.Marquee是一款jQuery文字跑马灯插件。jQuery.Marquee跑马灯插件可以结合使用CSS3动画,制作文字的上下左右移动效果。

热门文章

最新文章