Articoli Consigliati

La Successione di Fibonacci - VideoLa Successione di Fibonacci - Video

Ultimamente mi sono appassionato a giochi matematici ed enigmi. Mentre programmo una rubrica su enigmi e giochi matematici da pubblicare qui su Good2know, vi propongo questo...

Leggi l'articolo

Ecografia con l'iPhoneEcografia con l'iPhone

Se è vero il motto "C'è un'applicazione per tutto" anche il numero di gadget per smartphone sta raggiungendo questa definizione. E' il caso di un piccolo strumento...

Leggi l'articolo

Text shadow animation, testo in 3D con CSS3Text shadow animation, testo in 3D con CSS3

Girovagando per il web ho trovato un effetto con i nuovi css3 molto carino., fatto utilizzando i tag introdotti nella terza versione di CSS. Attraverso questi nuovi...

Leggi l'articolo

E dopo robots.txt è il momento di humans.txtE dopo robots.txt è il momento di humans.txt

Il file robots.txt penso che lo conosciamo tutti, è un file txt per aiutare i crawler dei motori di ricerca nell'indicizzazione. Bene, dopo i robot nei siti internet...

Leggi l'articolo

Zend_Acl e Zend_Auth - Sistema di autenticazione e autorizzazione con Zend FrameworkZend_Acl e Zend_Auth - Sistema di autenticazione e autorizzazione con Zend Framework

Zend_Acl è una delle tante classi di Zend molto utili. Consiste in una serie di funzionalità che permettono un controllo molto facile di CHI può fare COSA aumentando...

Leggi l'articolo

Zend_Auth - Gestire le autenticazioni semplicementeZend_Auth - Gestire le autenticazioni semplicemente

Zend_Auth è una classe di Zend Framework che permette la gestione dell'autenticazione su un sito in maniera molto semplice. Consiste in una serie di adapter per gli...

Leggi l'articolo

Aumentare le prestazioni di PHP con Facebook HipHopAumentare le prestazioni di PHP con Facebook HipHop

I carissimi programmatori di Facebook hanno rilasciato un piccolo progetto che ottimizza notevolmente le prestazioni, in fase di esecuzione, di codice php: Facebook HipHop. Come...

Leggi l'articolo

GoPano micro - lente per iPhone 4 per registrare video a 360 gradiGoPano micro - lente per iPhone 4 per registrare video a 360 gradi

Salve a tutti cari lettori, oggi vi vorrei presentare questo gadget per iPhone 4 che permette di registrare video a 360 gradi. Di seguito potete vedere un video d'esempio. Potete...

Leggi l'articolo

Sistema di video-conferenza con Kinect progettato dal MITSistema di video-conferenza con Kinect progettato dal MIT

Salve a tutti cari lettori di good2know. Navigando ho trovato un nuovo progetto in fase di sviluppo da parte del MIT di Boston su un sistema di videoconferenze che...

Leggi l'articolo

Animazione raggi rotanti in css3 e javascriptAnimazione raggi rotanti in css3 e javascript

Propongo di seguito un interessante effetto in javascript e css3 che permette di creare un effetto di rotazione a qualsiasi contenuto. La proprietà che utilizzeremo...

Leggi l'articolo

I have added "Montedidio" to my aNobii bookshelf

Come personalizzare un input file di un form

0

Scritto il 10/08/2010 da Filippo Matteo Riggio

Cari lettori di good2know, oggi vi presento un nuovo articolo sulla personalizzazione degli input file di un form.

Il metodo è semplice, utilizza i fogli di stile CSS e le proprietà del DOM.

Per vedere un esempio cliccate sul link.

Il concetto è di mettere un input falso al di sopra dell’input file reale e fare in modo che quando viene cliccato l’input file falso o il bottone sfoglia si apra comunque la finestra di scelta del file.

Una volta selezionato il file, l’input file reale dovrà avere come “value” il reale percorso del file.

Di seguito il codice css :

.input_file{
background: url(../img/bg_input_file.png) no-repeat;
border: none;
width: 202px;
height: 26px;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
margin:0 0 0 0;
padding:0 0 0 0px;
}
.input_file:focus{ background-color: transparent;}
input {
background: url(../img/bg_input_file.png) no-repeat;
border: none;
width: 202px;
height: 26px;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
margin:0 0 0 0;
padding:0 0 0 0px;
}
input:focus {	background-color: transparent;}
div.fileinputs {
position: relative;
height: 26px;
width: 202px;
}
input.file {
width: 274px;
margin: 0;
}
input.file.hidden {
position: relative;
text-align: right;
-moz-opacity:0 ;
filter:alpha(opacity: 0);
opacity: 0;
z-index: 2;
}
div.fakefile {
position: absolute;
top: 0px;
left: 0px;
width: 274px;
height:26px;
padding: 0;
margin: 0;
z-index: 1;
}
div.fakefile input {
position:relative;
bottom:8px;
margin:0 0 0px 0;
padding:5px 0 0px 10px;
}

Di seguito la funzione js che dovrà essere richiamata nel tag body.

var W3CDOM = (document.createElement && document.getElementsByTagName);
function init() {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var image = document.createElement('img');
	image.src='img/btn_sfoglia2.png';
        fakeFileUpload.appendChild(image);
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].getAttribute('noscript')) continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'file hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		if (x[i].value)
			x[i].onchange();
		x[i].onchange = x[i].onmouseout = function () {
			this.relatedElement.value = this.value;
		}
	}
}
Come ultimo appunto, ecco la parte del DOM con il codice HTML :
<body onLoad="init();">
<form action="" method="post" enctype="multipart/form-data">
<div>     <input type="file" name="link_file" /> </div>
</form>
</body>

Compatibilità

Lo script qui sopra è compatibile con tutti i browser, bisogna solo personalizzare il css per Explorer.

Download

Di seguito il link per scaricare l’esempio di sopra.

Tags: ,

Lascia un commento