/* * Style File - jQuery plugin for styling file input elements * * Copyright (c) 2007-2008 Mika Tuupola * * Licensed under the MIT license: * http://www.opensource.org/licenses/mit-license.php * * Based on work by Shaun Inman * http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom * * Revision: $Id: jquery.filestyle.js 303 2008-01-30 13:53:24Z tuupola $ * */ (function($) { $.fn.filestyle = function(options) { /* TODO: This should not override CSS. */ var settings = { width : 250 }; if(options) { $.extend(settings, options); }; return this.each(function() { var self = this; var wrapper = $("
") .css({ "width": settings.imagewidth + "px", "height": settings.imageheight + "px", "background": "url(" + settings.image + ") 0 0 no-repeat", "background-position": "right", "display": "inline", "position": "absolute" }); var filename = $('') .addClass($(self).attr("class")) .css({ "display": "inline", "width": settings.width + "px" }); $(self).before(filename); $(self).wrap(wrapper); var css = "position:relative;height:"+ settings.imageheight + "px;width:"+ settings.width + "px;display:inline;cursor:pointer;"; if ($.browser.msie) css = css + "filter:alpha(opacity=0);"; else css = css + "opacity:0.0;"; if ($.browser.mozilla) { if (/Win/.test(navigator.platform)) { css = css + "margin-left:-142px !important;" } else { css = css + "margin-left:-168px !important;" } } else { css = css + "margin-left:"+ (settings.imagewidth - settings.width) + "px !important;"; } $(self).css("cssText", css); if (!$.browser.msie) $(self).bind("change", function() { if ($(self).val()) filename.val($(self).val().substr($(self).val().lastIndexOf("\\")+1)); else filename.val($(self).val()); }); else $(self).bind("propertychange", function() { if ($(self).val()) filename.val($(self).val().substr($(self).val().lastIndexOf("\\")+1)); else filename.val($(self).val()); }); }); }; })(jQuery);