Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/11/2010, 08:34
Avatar de Devil Akuma
Devil Akuma
 
Fecha de Ingreso: mayo-2004
Mensajes: 104
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Se puede simular un <input type="file>??

Buenas!

He puesto el código tal y como me has comentado... y no me ha cambiado nada. En IE se veía el input más pequeño, pero en Firefox exactamente igual. ¿Puede ser que lo haya puesto mal?

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. if (!window.SI) { var SI = {}; };
  3. SI.Files =
  4. {
  5.     htmlClass : 'SI-FILES-STYLIZED',
  6.     fileClass : 'file',
  7.     wrapClass : 'cabinet',
  8.     wrapClass2 : 'cabinet2',
  9.    
  10.     fini : false,
  11.     able : false,
  12.     init : function()
  13.     {
  14.         this.fini = true;
  15.        
  16.         var ie = 0 //@cc_on + @_jscript_version
  17.         if (window.opera || (ie && ie < 5.5) || !document.getElementsByTagName) { return; } // no support for opacity or the DOM
  18.         this.able = true;
  19.        
  20.         var html = document.getElementsByTagName('html')[0];
  21.         html.className += (html.className != '' ? ' ' : '') + this.htmlClass;
  22.     },
  23.    
  24.     stylize : function(elem)
  25.     {
  26.         if (!this.fini) { this.init(); };
  27.         if (!this.able) { return; };
  28.        
  29.         elem.parentNode.file = elem;
  30.         elem.parentNode.onmousemove = function(e)
  31.         {
  32.             if (typeof e == 'undefined') e = window.event;
  33.             if (typeof e.pageY == 'undefined' &&  typeof e.clientX == 'number' && document.documentElement)
  34.            {
  35.                e.pageX = e.clientX + document.documentElement.scrollLeft;
  36.                 e.pageY = e.clientY + document.documentElement.scrollTop;
  37.             };
  38.  
  39.             var ox = oy = 0;
  40.             var elem = this;
  41.             if (elem.offsetParent)
  42.             {
  43.                 ox = elem.offsetLeft;
  44.                 oy = elem.offsetTop;
  45.                 while (elem = elem.offsetParent)
  46.                 {
  47.                     ox += elem.offsetLeft;
  48.                     oy += elem.offsetTop;
  49.                 };
  50.             };
  51.  
  52.             var x = e.pageX - ox;
  53.             var y = e.pageY - oy;
  54.             var w = this.file.offsetWidth;
  55.             var h = this.file.offsetHeight;
  56.  
  57.             this.file.style.top     = y - (h / 2)  + 'px';
  58.             this.file.style.left    = x - (w - 30) + 'px';
  59.         };
  60.     },
  61.    
  62.     stylizeById : function(id)
  63.     {
  64.         this.stylize(document.getElementById(id));
  65.     },
  66.    
  67.     stylizeAll : function()
  68.     {
  69.         if (!this.fini) { this.init(); };
  70.         if (!this.able) { return; };
  71.        
  72.         var inputs = document.getElementsByTagName('input');
  73.         for (var i = 0; i < inputs.length; i++)
  74.        {
  75.            var input = inputs[i];
  76.            if (input.type == 'file' && input.className.indexOf(this.fileClass) != -1 && input.parentNode.className.indexOf(this.wrapClass) != -1)
  77.            {
  78.                this.stylize(input);
  79.                                
  80.            };
  81.            if (input.type == 'file' && input.className.indexOf(this.fileClass) != -1 && input.parentNode.className.indexOf(this.wrapClass2) != -1)
  82.            {
  83.                this.stylize(input);
  84.            };
  85.            };
  86.    }
  87. };
  88. </head>
  89.  
  90. <form id="frmPicture" name="frmChangePicture" action="" method="post" enctype="multipart/form-data">
  91.   <input type="hidden" name="Change" value="1">
  92.   <label class="cabinet" style="background: url(img/site_new/btn-change-photo.png) 0 0 no-repeat;">
  93.   <input type="file" id="filein" class="file" style="width:115px; cursor: pointer;" name="per-image" onchange="document.getElementById('frmPicture').submit();" />
  94.   </label>
  95. </form>
  96. </html>
__________________
CINeol has you...