Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    51

    Gestione di 3 menu a tendina

    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:

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da scar_man
    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.
    Si tratta di JavaScript, non di Java. Sono due linguaggi diversi.

    Ti sposto nel forum dedicato a quest'ultimo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    51
    si vede che sono pratico...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    51
    nessuno sa darmi una dritta?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    51
    UP!

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    51
    Non è che nel frattempo qualcuno abbia avuto un lampo di genio? Io ho provato ad informarmi ma non ho nulla di nuovo... Non vorrei che la cosa non fosse possibile... Qualcuno l'ha già fatto? bisogna appoggiarsi ad un database?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    51
    Sono in un vicolo cieco...
    Nessuno che sà darmi almeno un'indicazione su come potrei risolvere il problema??

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.