在开发项目过程中会碰到不同浏览器input file样式不一样。
经过分析,打算都用IE上面的附件上传样式,
方案如下:
1、在IE下截个如上面的上传按钮,并保存。
2、判断浏览器类型,如果是非IE,则将页面上的input 设置为近乎透明,然后将图片放在上面。
不用修改原有代码,渲染时会扫描页面的input file 然后进行样式覆盖。
代码如下
css:
div.fakefile { position: absolute; top: 0px; left: 0px; z-index: 1; } input.file { width: 208px; position: relative; text-align: right; -moz-opacity: 0; filter: alpha(opacity : 0); opacity: 0; z-index: 2; }
js代码:
/** * 附件上传样式自定义,解决不同浏览器附件上传框样式不一样问题 */ function initFileUploads() { if($.browser&&$.browser.msie) return; $("input[type=file]").each(function(){ if($(this).parent().attr("class")!='fileinputs') return; $(this).attr("class","file"); var obj=$("<div class='fakefile'><input ct='file'/><img style='padding-bottom:4px;' src='common/image/upload.png'><div>"); $(this).after(obj); $(this).parent().find("input[ct=file]").width($(this).width()-65); $(this).on("change",function(){ $(($(this).parent().find("input"))[1]).val($(this).val()); }) }); } $(document).ready(function(){ initFileUploads(); })