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.![]()