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


Posted in Javascript onOctober 24, 2011

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

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

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

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

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 
*/ 
(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(0, 1); 
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",并且易于美化。
下载该插件:jquery.fileEveryWhere.rar
来自:http://www.cnblogs.com/flowerszhong/

Javascript 相关文章推荐
firebug的一个有趣现象介绍
Nov 30 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
JS修改iframe页面背景颜色的方法
Apr 01 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
vue2.0获取自定义属性的值
Mar 28 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
May 03 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
vue视图不更新情况详解
May 16 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 Javascript
javascript实现贪吃蛇游戏(娱乐版)
Aug 17 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 #Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
Oct 24 #Javascript
css值转换成数值请抛弃parseInt
Oct 24 #Javascript
更优雅的事件触发兼容
Oct 24 #Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 #Javascript
最佳的addEvent事件绑定是怎样诞生的
Oct 24 #Javascript
关于javascript function对象那些迷惑分析
Oct 24 #Javascript
You might like
在PHP中利用XML技术构造远程服务(下)
2006/10/09 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
9种python web 程序的部署方式小结
2014/06/30 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
世界上最好的足球商店:Unisport
2019/03/02 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
证券期货行业个人的自我评价
2013/12/26 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
通信工程求职信
2014/07/16 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
英文感谢信格式
2015/01/21 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
四年级作文之植物
2019/09/20 职场文书
导游词之青岛太清宫
2019/12/13 职场文书