la mia situazione è questa:
sto creando una pèagina di caricamento articolo dove ho diversi campi, tra cui N campi immagini e N campi allegati.
al submit del form devo effettuare un primo livello di verifica del tipo di file, successivamente lato server un secondo livello di verifica.
il codice html in questione è questo, premetto che sleziono gli element tramite IL TAG ID
codice:
<form method="POST" name="insert" enctype="multipart/form-data" action="db_insert.php" onSubmit="javascript:file_control();">
<td align="left"><input type="file" name="allegato[]" id="allegati" size="45"></td>
<td align="left"><input type="file" name="immagine[]" id="immagine" size="45"></td>
e questo il java script:
codice:
<script language="JavaScript" type="text/JavaScript">
function ValidAll(url)
{
var ext= url.split('.');
return /(pdf|doc|rtf|xls)/.test(ext[ext.length-1]);
}
function ValidImg(url)
{
var ext= url.split('.');
return /(jpg|jpeg)/.test(ext[ext.length-1]);
}
function getElementsById(sId)
{
var outArray = new Array();
if(typeof(sId)!='string' || !sId)
{
return outArray;
};
if(document.evaluate)
{
var xpathString = "//*[@id='" + sId.toString() + "']"
var xpathResult = document.evaluate(xpathString, document, null, 0, null);
while ((outArray[outArray.length] = xpathResult.iterateNext())) { }
outArray.pop();
}
else if(document.all)
{
for(var i=0,j=document.all[sId].length;i<j;i+=1)
{
outArray[i] = document.all[sId][i];
}
}
else if(document.getElementsByTagName)
{
var aEl = document.getElementsByTagName( '*' );
for(var i=0,j=aEl.length;i<j;i+=1)
{
if(aEl[i].id == sId )
{
outArray.push(aEl[i]);
};
};
};
return outArray;
}
function check_img(files)
{
for (x=1;x<=<? echo $pic_num ?>;x++)
{
var file=files[x].value;
if (x==1 && file == "")
{
var vai=confirm("Attenzione! si sta tralasciando la scelta dell' immagine base per l'articolo,\n ovvero l'immagine che verra' visualizzata dall' utente \n nella lista degli articoli.\n Si desidera continuare?\n");
if (vai)
{
return true;
}
else
{
insert.immagini[x].focus();
return false;
}
}
if(!ValidImg(file))
{
alert('I file accettati sono jpg o jpeg');
insert.immagine[x].focus();
return false;
}
}
}
function check_all(files)
{
for (x=1;x<=<? echo $att_num ?>;x++)
{
var file=files[x].value;
if(!ValidAll(file))
{
alert('I file accettati sono doc,xls,rtf o pdf');
insert.allegato[x].focus();
return false;
}
}
}
function file_control()
{
var files_img = getElementsById('immagine');
var files_all = getElementsById('allegati');
check_img(files_img);
check_all(files_all);
}
il messaggio della consolle degli errori di FFox è "document.insert has non properties" e mi rimane il browser a pagina bianca in caricamento con la clessidra... non riesco a capire, io di java script sò meno di una cippa