Buongiorno a tutti: inanzitutto premetto che non so quasi nulla di java quindi quello che per me risulta un problema attulamente insuperabile magari si risolve in un lampo.
Sto tentando di creare una pagina che permetta di caricare per una determinata provincia d'italia l'agente "Pinco pallino" che segue quella zona. Il problema è che ho deciso di fare tre tendine che hanno questa sequenza: REGIONE -> TIPOLOGIA -> PROVINCIA. Una volta che l'utente ha inserito i tre valori si caricherà la pagina corrispondente ad un determinato agente. Ed ecco il problema: Se per i campi regione e tipologia ho solo provveduto a sciverli nel codice della pagina principale, i possibili valori "PROVINCIA" dipendono dall'incrocio dei due genitori "REGIONE" e "TIPOLOGIA" il cui script è in un file esterno al documento.
Posto un pò di codice per essere più chiaro:
Nella pagina principale creo le tre tendine:
</TABLE></TD></TR>
<TR>
<FORM name=selez_pv onsubmit="return SceltaPV();"
action=/dove/index.html method=post><INPUT type=hidden name=PV>
<TD bgcolor="#0099ff">
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR bgcolor="#0099ff">
<TD colSpan=2 class=SottoLabelNAgruppo3>Regione
<SELECT
class=campiformH3 onchange=DV.populate(); size=1 name=REGIONE>
<OPTION value=0 selected>Tutte</OPTION><OPTION
value=valle>Valle d'Aosta</OPTION><OPTION
value=piemonte>Piemonte</OPTION> <OPTION
value=liguria>Liguria</OPTION> <OPTION
value=lombardia>Lombardia</OPTION><OPTION
value=trentino>Trentino</OPTION> <OPTION
value=veneto>Veneto</OPTION> <OPTION
value=friuli>Friuli</OPTION> <OPTION value=emilia>Emilia
Romagna</OPTION> <OPTION value=toscana>Toscana</OPTION>
<OPTION value=umbria>Umbria</OPTION> <OPTION
value=marche>Marche</OPTION> <OPTION
value=lazio>Lazio</OPTION> <OPTION
value=abruzzo>Abruzzo</OPTION><OPTION
value=molise>Molise</OPTION><OPTION
value=campania>Campania</OPTION> <OPTION
value=puglia>Puglia</OPTION><OPTION
value=basilicata>Basilicata</OPTION> <OPTION
value=calabria>Calabria</OPTION> <OPTION
value=sardegna>Sardegna</OPTION> <OPTION
value=sicilia>Sicilia</OPTION></SELECT></TD></TR>
<TR>
<TD class=SottoLabelNAgruppo3>Tipologia
<SELECT
class=campiformH3 size=1 name=TIPOLOGIA>
<OPTION value=0 selected>Tutte</OPTION> <OPTION
value=applicatori>Applicatori</OPTION> <OPTION
value=magazzini>Magazzini</OPTION> <OPTION
value=imprese>Imprese</OPTION>
</SELECT></TD></TR>
<TR>
<TD class=SottoLabelNAgruppo3>Provincia
<SELECT
class=campiformH3 size=1 name=PROVINCIA>
<SCRIPT language=JavaScript>DV.printOptions()</SCRIPT>
</SELECT></TD>
<TD class=IMGCampiFormH3><INPUT type=image height=18 width=18
src="Dove_siamo_Italia/homeric_pv.gif"
value=AVANTI></TD></TR></TBODY></TABLE></TD>
</FORM></TR>
<TR>
<TD bgcolor="#0099ff">[img]Dove_siamo_Italia/pix_trasp.gif[/img]</TD>
</TR></TBODY></TABLE>
Nello scirpt esteno, dove c'è sicuramente l'ignippo creo tutte le classi necessarie ma non riesco a gestire correttamente i tre livelli. Il codice è stato scritto per gestire solo 2 menù.
Cosa devo modificare per gestire il terzo valore? E' una cosa complicata?
// Scrittura voci menu di destra
function menuDestra (descr, url, id) {
document.write('<TR>');
if (menuDestraOK) {
document.write('<TD WIDTH="229" HEIGHT="18" CLASS="vocemenu" ID="' + id + '"');
document.write(' ONMOUSEOVER="Classe(\'' + id + '\',\'vocemenuon\');mouseMano(\'' + id + '\');"');
document.write(' ONMOUSEOUT ="Classe(\'' + id + '\',\'vocemenu\');"');
document.write(' ONCLICK="URLwindow(\'' + url + '\');">');
document.write(descr + '</TD>');
} else {
document.write('<TD WIDTH="229" HEIGHT="18" CLASS="vocemenu">');
document.write('<A HREF="../Dove%20siamo%20-%20Italia_file/%27%20+%20url%20+%20%27" CLASS="vocemenuA">');
document.write(descr + '</A></TD>');
}
document.write('</TR>');
return true;
}
// Scrittura voci menu di destra con voce attiva
function menuDestraOn (descr, url, id) {
document.write('<TR>');
if (menuDestraOK) {
document.write('<TD WIDTH="229" HEIGHT="18" CLASS="vocemenuon" ID="' + id + '"');
document.write(' ONMOUSEOVER="mouseMano(\'' + id + '\');"');
document.write(' ONCLICK="URLwindow(\'' + url + '\');">');
document.write(descr + '</TD>');
} else {
document.write('<TD WIDTH="229" HEIGHT="18" CLASS="vocemenuon">');
document.write('<A HREF="../Dove%20siamo%20-%20Italia_file/%27%20+%20url%20+%20%27" CLASS="vocemenuA">');
document.write(descr + '</A></TD>');
}
document.write('</TR>');
return true;
}
// Scrittura voci menu di destra - voce "home"
function menuDestraHome () {
document.write('<TR>');
if (menuDestraOK) {
document.write('<TD WIDTH="229" HEIGHT="20" CLASS="vocemenuh" ID="menuhome"');
document.write(' ONMOUSEOVER="Classe(\'menuhome\',\'vocemenuhon\'); mouseMano(\'menuhome\');"');
document.write(' ONMOUSEOUT="Classe(\'menuhome\',\'vocemenuh\');"') ;
document.write(' ONCLICK="URLwindow(\'/home.html\');">');
document.write('Home</TD>');
} else {
document.write('<TD WIDTH="229" HEIGHT="20" CLASS="vocemenuh">');
document.write('<A HREF="/home.html" CLASS="vocemenuA">');
document.write('Media World home</A></TD>');
}
document.write('</TR>');
return true;
}
// Scrittura voci menu di destra - voce descrittiva corrispondenti a quella attiva
function menuDestraDescr (descr) {
document.write('<TR>');
document.write('<TD WIDTH="229" HEIGHT="18" CLASS="vocemenuon">');
document.write(descr + '</TD>');
document.write('</TR>');
return true;
}
// Scrittura voci menu di destra formato "Lavoro"
function menuDestraLav (descr, url, id) {
document.write('<TR>');
if (menuDestraOK) {
document.write('<TD WIDTH="229" HEIGHT="23" CLASS="vocemenulav" ID="' + id + '"');
document.write(' ONMOUSEOVER="Classe(\'' + id + '\',\'vocemenulavon\');mouseMano(\'' + id + '\');"');
document.write(' ONMOUSEOUT ="Classe(\'' + id + '\',\'vocemenulav\');"');
document.write(' ONCLICK="URLwindow(\'' + url + '\');">');
document.write(descr + '</TD>');
} else {
document.write('<TD WIDTH="229" HEIGHT="18" CLASS="vocemenulav">');
document.write('<A HREF="../Dove%20siamo%20-%20Italia_file/%27%20+%20url%20+%20%27" CLASS="vocemenuA">');
document.write(descr + '</A></TD>');
}
document.write('</TR>');
return true;
}
// Gestione Combo Dinamici
function DynamicCombo() {
if (arguments.length < 2) { alert("Not enough arguments in DynamicCombo()"); }
// nome del combo dinamico
this.target = arguments[0];
// imposta i combo dai quali il combo dinamico dipende
this.dependencies = new Array();
for (var i=1; i<arguments.length; i++) {
this.dependencies[this.dependencies.length] = arguments[i];
}
// la form a cui appartiene il combo
this.form = null;
// crea nuovi oggetti per il combo
this.dependentValues = new Object();
// valore di default
this.defaultValues = new Object();
// oggetto per i valori del combo
this.options = new Object();
// delimitatore dei valori da usare nel combo
this.delimiter = "|";
// la stringa più lunga delle "options" (per Netscape)
this.longestString = "";
// Il numero delle "options" da visualizzare (per Netscape)
this.numberOfOptions = 0;
// mapping dei metodi
this.addOptions = DynamicCombo_addOptions;
this.populate = DynamicCombo_populate;
this.setDelimiter = DynamicCombo_setDelimiter;
this.setDefaultOption = DynamicCombo_setDefaultOption;
this.printOptions = DynamicCombo_printOptions;
this.init = DynamicCombo_init;
}
// cambia il delimitatore tra le varie "option"
function DynamicCombo_setDelimiter(val) {
this.delimiter = val;
}
// imposta il valore di default del combo
function DynamicCombo_setDefaultOption(condition, val) {
this.defaultValues[condition] = val;
}
// mappa la form per popolare i combo
function DynamicCombo_init(theform) {
this.form = theform;
this.populate();
}
// aggiunge le "options" al combo
function DynamicCombo_addOptions(dependentValue) {
if (typeof this.options[dependentValue] != "object") { this.options[dependentValue] = new Array(); }
for (var i=1; i<arguments.length; i+=2) {
// rintraccia la stringa più lunga
if (arguments[i].length > this.longestString.length) {
this.longestString = arguments[i];
}
this.numberOfOptions++;
this.options[dependentValue][this.options[dependentValue].length] = arguments[i];
this.options[dependentValue][this.options[dependentValue].length] = arguments[i+1];
}
}
// popola il combo
function DynamicCombo_populate() {
var theform = this.form;
var i,j,obj,obj2;
// ottien i valori correnti di tutte le combo da cui il combo dinamico dipende
this.dependentValues = new Object;
var dependentValuesInitialized = false;
for (i=0; i<this.dependencies.length;i++) {
var sel = theform[this.dependencies[i]];
var selName = sel.name;
// se è la prima combo dipendente semplicemente la riempio
if (!dependentValuesInitialized) {
dependentValuesInitialized = true;
for (j=0; j<sel.options.length; j++) {
if (sel.options[j].selected) {
this.dependentValues[sel.options[j].value] = true;
}
}
}
// altrimenti aggiungo una nuova "option"
else {
var tmpList = new Object();
var newList = new Object();
for (j=0; j<sel.options.length; j++) {
if (sel.options[j].selected) {
tmpList[sel.options[j].value] = true;
}
}
for (obj in this.dependentValues) {
for (obj2 in tmpList) {
newList[obj + this.delimiter + obj2] = true;
}
}
this.dependentValues = newList;
}
}
var targetSel = theform[this.target];
// memorizzo la voce selezionata
var targetSelected = new Object();
for (i=0; i<targetSel.options.length; i++) {
if (targetSel.options[i].selected) {
targetSelected[targetSel.options[i].value] = true;
}
}
targetSel.options.length = 0; // cancello tutte le "option"
for (i in this.dependentValues) {
if (typeof this.options[i] == "object") {
var o = this.options[i];
for (j=0; j<o.length; j+=2) {
var text = o[j];
var val = o[j+1];
targetSel.options[targetSel.options.length] = new Option(text, val, false, false);
if (this.defaultValues[i] == val) {
targetSelected[val] = true;
}
}
}
}
targetSel.selectedIndex=0;
// seleziono le voci che erano selezionate prima
for (i=0; i<targetSel.options.length; i++) {
if (targetSelected[targetSel.options[i].value] != null && targetSelected[targetSel.options[i].value]==true) {
targetSel.options[i].selected = true;
}
}
}
// Attivazione Pagina PV dal menu si destra
function Agente() {
if(document.agente.REGIONE.value == "0") {
document.agente.method = 'get';
document.agente.action = '/dove/index.html';
} else {
if(document.agente.PROVINCIA.value == "0" ||
document.agente.PROVINCIA.value == "milano" ||
document.agente.PROVINCIA.value == "firenze_prov" ||
document.agente.PROVINCIA.value == "roma") {
// alert (document.agente.REGIONE.value);
if(document.agente.PROVINCIA.value == "0") {
document.agente.action = '/dove/' + document.agente.REGIONE.value + '.html';
} else {
document.agente.action = '/dove/' + document.agente.PROVINCIA.value + '.html';
}
document.agente.method = 'get';
} else {
// alert (document.agente.PROVINCIA.value);
document.agente.value = document.agente.PROVINCIA.value;
document.agente.action= /dove/agente.pl';
}
}
document.agente.submit();
return true;
}
Qualcuno mi sa aiutare??VVoVe: