Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Ajax]combo dinamica in popup js

    Salve,
    ho un problema su cui sto sbattendo la testa da un paio di giorni (ahimè poca conoscenza di js non aiuta); ho un piccolo form inserito in una finestra di popup generata dinamicamente attraverso il generatore js opensource OpenPopUps (http://www.openwebware.com). Il problema risiede nel fatto che uno dei due combo presenti dovrebbe essere caricato attraverso uno script ajax dinamicamente a seconda della scelta fatta sul primo; tutto funziona perfettamente se il form non è inserito nel DIV richiesto dal generatore di popup altrimenti
    Il problema è che non so come passare il giusto riferimento al codice ajax per far aggiungere al secondo combo gli elementi.
    Credo di non essere stato chiarissimo e per questo inserisco un po' di codice:

    Codice html del form inserito nel div richiesto dal generatore popup:

    <div id="Div2">
    <form name="frm_ordprod" method="post" onsubmit="">
    <table width="400" border="0" cellspacing="2" class="testo">
    <tr>
    <td height="16" colspan="2">Inserimento nuovo prodotto in
    un ordine</td>
    </tr>
    <tr>
    <td height="16" colspan="2"></td>
    </tr>
    <tr>
    <td width="63" valign="middle" align="right" class="testo_norm" height="35">Categoria:</td>
    <td width="327" valign="middle" align="left" class="testo_norm">
    <select name="categoria" id="categoria" onChange="ajaxComboBox('01_prod.php','prodotto',th is);" class="testo_norm">
    <option value="">Scegliere una categoria</option>
    <option value="id1">Categoria prova 1 m</option>
    <option value="id2">sottocategoria prova 1</option>
    <option value="id3">Categoria prova 2</option>
    <option value="id4">Sottocategoria prova 2 m</option>
    </select>
    </td>
    </tr>
    <tr>
    <td width="63" valign="middle" align="right" class="testo_norm" height="35">Cod.Prod.:</td>
    <td width="327" valign="middle" align="left" class="testo_norm">
    <select name="prodotto" id="prodotto" class="testo_norm">
    <option value="">Scegliere un prodotto</option>
    </select>
    </td>
    </tr>
    <tr>
    <td align="right" valign="middle" class="testo_norm" height="35" colspan="2">
    <input type="submit" name="Submit" value="Inserisci prodotto">
    </td>
    </tr>
    </table>
    </form>
    </div>

    Codice ajax:

    var HttpReq = null;
    var dest_combo = null;

    function ajaxComboBox(url, comboBox, cmbpart){
    dest_combo = comboBox;
    var indice = document.getElementById('categoria').selectedIndex ;
    var sigla = document.getElementById('categoria').options[indice].getAttribute('value');
    url = url + '?uf=' + cmbpart.value;
    alert(url);
    if (document.getElementById) { //Verifica se o Browser suporta DHTML.
    if (window.XMLHttpRequest) {
    HttpReq = new XMLHttpRequest();
    HttpReq.onreadystatechange = XMLHttpRequestChange;
    HttpReq.open("GET", url, true);
    HttpReq.send(null);
    } else if (window.ActiveXObject) {
    HttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    if (HttpReq) {
    HttpReq.onreadystatechange = XMLHttpRequestChange;
    HttpReq.open("GET", url, true);
    HttpReq.send();
    }
    }
    }
    }

    function XMLHttpRequestChange() {
    if (HttpReq.readyState == 4 && HttpReq.status == 200){
    var result = HttpReq.responseXML;
    var prodotti = result.getElementsByTagName("prodotto");
    document.getElementById(dest_combo).innerHTML = "";
    for (var i = 0; i < prodotti.length; i++) {
    new_opcao = create_opcao(prodotti[i]);
    document.getElementById(dest_combo).appendChild(ne w_opcao);
    }
    }
    }

    function create_opcao(prod) {
    //return opcao.cloneNode(true);
    var new_opcao = document.createElement("option");
    var texto = document.createTextNode(prod.childNodes[0].data);
    new_opcao.setAttribute("value",prodotto.getAttribu te("id"));
    new_opcao.appendChild(texto);
    return new_opcao;
    }

    Ora, tralasciando il codice che genera il file xml, il problema risiede nel fatto che la funzione ajaxComboBox non riesce a prendere il riferimento al combo di destinazione in quanto inserito nel DIV manipolato dal codice del generatore di popup. Sono riuscito a farle vedere il combo di partenza passando il riferimento this come parametro della funzione. Ma come fare per l'altro combo?????
    Grazie anticipatamente a tutti.

  2. #2
    Salve,

    dal momento che sono arrivato all'idrofobia , non c'è anima pia che possa aiutarmi??? Thanks

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.