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 相关文章推荐
for 循环性能比较 提高for循环的效率
Mar 19 Javascript
jquery+easeing实现仿flash的载入动画
Mar 10 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
JS实现光滑展开合拢的菜单效果代码
Sep 16 Javascript
js流动式效果显示当前系统时间
May 16 Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 Javascript
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
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
图形数字验证代码
2006/10/09 PHP
一个程序下载的管理程序(一)
2006/10/09 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
用Zend Encode编写开发PHP程序
2010/02/21 PHP
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
python多线程http下载实现示例
2013/12/30 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python中提高pip install速度
2020/02/14 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
DTD的含义以及作用
2014/01/26 面试题
医学专业毕业生个人求职信
2013/12/25 职场文书
幼儿教师考核制度
2014/01/25 职场文书
小学生成长感言
2014/01/30 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
一份文言文检讨书
2014/09/13 职场文书
模范班主任事迹材料
2014/12/17 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
音乐剧猫观后感
2015/06/04 职场文书