HighDots Forums  

capire da dove proviene il click in un campo file[]

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss capire da dove proviene il click in un campo file[] in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
pasch
 
Posts: n/a

Default capire da dove proviene il click in un campo file[] - 05-05-2006 , 10:20 AM






allora ragazzi sono nuovissimo del gruppo, vi posto una domanda precisa alla
quale mi sto scervellando da giorni e giorni ma non riesco proprio a trovare
una soluzione, magari è semplice semplice, non ne ho idea, veramente.

io ho un form con all'interno un campo per l'upload di foto di questo
genere:

<input name='file[]' type='file' size='55' onChange=controllo() >

come si può vedere al cambiare della selezione si attiva una funzione
controllo.

<input name='dimensione[]' type='text' size='8' >

associato alla foto i-esima c'è un campo di testo i-esimo.

Grazie ad una funzione javascript, dinamicamente si aggiungono lato client
nuovi campi, che prendono il nome di file1, file2, file3... in pratica c'è
un contatore degli uploads che si stanno facendo, e per ogni nuovo ulpoads
che si aggiunge, si crea il campo foto1 - dimensione1, foto2 - dimensione2,
ecc...

currentUploads++;
if (currentUploads>0)
document.getElementById('addupload').childNodes[0].data='Aggiungi file';
var newFields = document.getElementById('attachment').cloneNode(tr ue);
newFields.id = '';
newFields.style.display = 'block';

var newField = newFields.childNodes;
for (var i=0;i<newField.length;i++){
if (newField[i].name==nameFile){
newField[i].id=nameFile+currentUploads;
newField[i].name=nameFile+currentUploads;
}


Uso PHP poi per passare le variabili a un file upload.php, ma mi serve solo
alla fine, volevo riuscire a usare una funzione controllo lato client che mi
metta su un campo testo quale è la dimensione della foto appena selezionata:
non riuscendo a intercettare quale è il campo file cliccato, ho fatto una
prova che scrive sul campo corrispondente alla foto numero1, e difatti il
tutto funziona:

foto = document.forms["modulo"].elements['file'+1].value ;
var myImg=new Image();

myImg.onload=function()
{
size=this.fileSize;

document.forms["modulo"].elements['dimensioni'+1].value = size;
}

myImg.src=foto;

come diavolo faccio a capire il bottone cliccato?!?
grazie mille.



Reply With Quote
  #2  
Old   
pasch
 
Posts: n/a

Default Re: capire da dove proviene il click in un campo file[] - 05-05-2006 , 12:45 PM






per completezza posto il form , ci sono due div, uno con file, e uno con
file[].. non so dove mettere le mani, aiuto....


echo " <form action='{$_SERVER['PHP_SELF']}' method='POST' name='modulo'
enctype='multipart/form-data'>";

echo " <div id='attachment' style='display:none'>";

echo " <input name='file' type='file' onChange=controllo() size='55' >";

echo " <input id='text' name='dimensione' type='text' size='55' >";

echo " <a href='#'
onclick='javascript:removeFile(this.parentNode.par entNode,this.parentNode);'
Quote:
Rimuovi</a>";
echo " </div>";


echo " <div id='attachments'>";

echo " <br/><a id=\"addupload\" href=\"javascript:addUpload('file',
'dimensione'); \">Aggiungi file</a><br/><br/></span>";

echo " <input name='file[]' type='file' size='55' onChange=controllo()
/>";

echo " <input name='dimensione[]' type='text' size='55' />";


echo " <span id='attachmentmarker'></span>
</div>




Reply With Quote
  #3  
Old   
ZER0
 
Posts: n/a

Default Re: capire da dove proviene il click in un campo file[] - 05-08-2006 , 04:08 AM



On Fri, 5 May 2006 16:20:55 +0200, pasch wrote:

Quote:
Uso PHP poi per passare le variabili a un file upload.php, ma mi serve solo
alla fine, volevo riuscire a usare una funzione controllo lato client che mi
metta su un campo testo quale è la dimensione della foto appena selezionata:
..fileSize è una proprietà non standard, e funziona solo su IE.

Tra l'altro, nei browser attuali per questioni non ben precisate di sicurezza,
non più possibile "agire" direttamente su un immagine lato client, ad esempio
anche solo visualizzandola in un tag IMG, per avere una sorta di preview.

Pare che solo IE lo permetta ancora, ma non è detto che con IE7 o qualche SP
non si adegui presto anche lui.

Quote:
non riuscendo a intercettare quale è il campo file cliccato, ho fatto una
prova che scrive sul campo corrispondente alla foto numero1, e difatti il
tutto funziona:

foto = document.forms["modulo"].elements['file'+1].value ;
Non stai facendo un po' di confusione tra "id" e "name", qui? In elements
dovresti passare il valore del name, non dell'id. Se ti funziona, è solo
perché IE mischia le due cose (per lui non c'è differenza), ma è un errore che
tutti gli altri browser non ammettono (e, si spera, anche IE in un futuro non
troppo lontano, perché genera un bel po' di problematiche).

Quote:
come diavolo faccio a capire il bottone cliccato?!?
Premesso tutto ciò che ti ho detto, ti basta aggiungere un parametro alla
funzione "controllo" (ricordati che l'event-handler è minuscolo, e di
impostare i delimitatori di attributo):


<input name="file[]" type="file" size="55" onchange="controllo(this)" />

E nella funzione controllo:

function controllo(sender){
/* sender contiene il riferimento all'oggetto */
}

--
"E' un vero peccato che tutte le persone che sanno come far funzionare
il Paese siano troppo occupate a guidare taxi o a tagliare capelli."
(George Burns)



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.