Ciao a tutti,
ho creato una select le cui options vengono inserite dinamicamente con innerhtml attraverso una chiamata ajax. La select viene riempita correttamente sia con firefox che con ie 8 (con un piccolo trucco che ho trovato in rete), però, quando chiedo il n. delle opzioni presenti nella select con firefox ho la risposta corretta, mentre con ie il n. risulta zero. Sapete indicarmi se c'è una soluzione? Vi posto il codice. Grazie mille...:dipser:
function crea_ordinamento(opzioni_sel)
{
var my_url="archivio_report.php";//pagina origine dati chiamata con ajax
var sel_dest=document.getElementById("ordinamento");
var sel_testata=document.getElementById("crit_testata");
var sel_report=document.getElementById('report');
var index_report=sel_report.selectedIndex;
var message_opzioni_sel;
var descr_report = sel_report.options[sel_report.selectedIndex].text;//ricava il nome del report salvato nel db (tabella t_tip_report)
var lungh_ordinamento;
//verifica se il parametor opzioni_sel è stato passato oppure no e, di conseguenza, crea la stringa da accodare
//alla variabile message
if (opzioni_sel!='undefined')
{
message_opzioni_sel="&selezione="+opzioni_sel;
}else{
message_opzioni_sel='';
}
var message="pagina_web="+document.getElementById('report').options[index_report].value+message_opzioni_sel+"&descrizione_report="+descr_report;
//richiesta ajax
if (window.XMLHttpRequest)
{
request=new XMLHttpRequest();
}else{
request=new ActiveXObject("Microsoft.XMLHTTP");
}
if (request)
{
request.open("POST",my_url);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.onreadystatechange=
function()
{
if (request.readyState == 4)
{
//codice innerhtml cross browser
if(document.all) //IE
{
//Aggiunge una opzione fittizia
var opts = "<option>opzione</option>" + request.responseText;
//Riempie select box
sel_dest.innerHTML=opts;
//Forza refresh della select box in IE
sel_dest.outerHTML = sel_dest.outerHTML;
alert(request.responseText);
}else{ //browser normali
//Risposta Ajax senza aggiunte
sel_dest.innerHTML=request.responseText;
//alert(request.responseText);
}
lungh_ordinamento=sel_dest.length;//determina quante opzioni contiene la select ordinamento
alert(sel_dest.length);
}
}
request.send(message);
}else{
alert("Il tuo browser non è abilitato per l'utilizzo di ajax");
}
}
ho creato una select le cui options vengono inserite dinamicamente con innerhtml attraverso una chiamata ajax. La select viene riempita correttamente sia con firefox che con ie 8 (con un piccolo trucco che ho trovato in rete), però, quando chiedo il n. delle opzioni presenti nella select con firefox ho la risposta corretta, mentre con ie il n. risulta zero. Sapete indicarmi se c'è una soluzione? Vi posto il codice. Grazie mille...:dipser:
function crea_ordinamento(opzioni_sel)
{
var my_url="archivio_report.php";//pagina origine dati chiamata con ajax
var sel_dest=document.getElementById("ordinamento");
var sel_testata=document.getElementById("crit_testata");
var sel_report=document.getElementById('report');
var index_report=sel_report.selectedIndex;
var message_opzioni_sel;
var descr_report = sel_report.options[sel_report.selectedIndex].text;//ricava il nome del report salvato nel db (tabella t_tip_report)
var lungh_ordinamento;
//verifica se il parametor opzioni_sel è stato passato oppure no e, di conseguenza, crea la stringa da accodare
//alla variabile message
if (opzioni_sel!='undefined')
{
message_opzioni_sel="&selezione="+opzioni_sel;
}else{
message_opzioni_sel='';
}
var message="pagina_web="+document.getElementById('report').options[index_report].value+message_opzioni_sel+"&descrizione_report="+descr_report;
//richiesta ajax
if (window.XMLHttpRequest)
{
request=new XMLHttpRequest();
}else{
request=new ActiveXObject("Microsoft.XMLHTTP");
}
if (request)
{
request.open("POST",my_url);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.onreadystatechange=
function()
{
if (request.readyState == 4)
{
//codice innerhtml cross browser
if(document.all) //IE
{
//Aggiunge una opzione fittizia
var opts = "<option>opzione</option>" + request.responseText;
//Riempie select box
sel_dest.innerHTML=opts;
//Forza refresh della select box in IE
sel_dest.outerHTML = sel_dest.outerHTML;
alert(request.responseText);
}else{ //browser normali
//Risposta Ajax senza aggiunte
sel_dest.innerHTML=request.responseText;
//alert(request.responseText);
}
lungh_ordinamento=sel_dest.length;//determina quante opzioni contiene la select ordinamento
alert(sel_dest.length);
}
}
request.send(message);
}else{
alert("Il tuo browser non è abilitato per l'utilizzo di ajax");
}
}