Come vedi ho cambiato quello che mi avevi detto in CaricaDdl({2196},{2197},2) ma continua a non funzionare.
Regione <script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$('list-dropdown .dropdown-item select').each(function(i){
if($('option[selected="selected"]', this).length == 0){
$(this).prepend('<option value="">Please choose...</option>');
$(this).val('');
}
});
/*
ATTENZIONE: LEGGERE ATTENTAMENTE PRIMA DI USARE LO SCRIPT
Cosa fa lo sciprt: Tale script consente, una volta scelto un valore da una prima dropdownlist (ddl1), di filtrare i valori presenti in una seconda dropdownlist (ddl2) in base a quanto scelto nella ddl1;
1. Lo script va inserito nel campo DDL primario (ddl1)
2. I paramentri da passare nella funzione sono ({IDdellaDDL1},{IDdellaDDL2},numeri di caratteri da togliere nei valori della DDL2 per fare il confronto con il valore della DDL1)
3. Es. se la mia DDL1 è id=10 e la DDL2 è id=14 mettiamo al posto di IDdellaDDL1 il valore 10 (primo parametro della funzione) e al posto di IDdellaDDL2 il valore 14 (secondo parametro della funzione)
4. per quanto riguarda il numero di caratteri da togliere nei valori della ddl2 per fare il confronto cerco di spiegarvelo con un esempio:
Se nella ddl1 ho i valori A,B,C,...N e nella ddl2 i valori A1,A2,B1,B2,C1,C2,...N1,N2 il confronto per la funzione è quando viene trovata la lettera A o la B o la C o la N quindi il numero di caratteri da togliere per il confronto sarà solamente 1 e quindi metterò 1 come terzo paramentro da passare alla funzione (perche A1- un carattere = A.
Se invece nella ddl1 ho i valori AAA,BBB,CCC,...NNN e nella ddl2 i valori AAA111,AAA222,BBB111,BBB222,CCC111,CCC222,....NNN111,NNN222 il confronto lo dovremo fare con le lettere AAA o BBB o CCC o NNN quindi il caratteri da togliere per il confronto saranno in questo caso 3 e quindi metterò 3 come terzo parametro (perce AAA111-tre caratteri = AAA.
IMPORTANTISSIMO: lo script funziona SOLAMENTE SE le due DDL vengono mostrate in uno stesso gruppo di domande e se, quindi, l'indagine viene visualizzata con un gruppo di domande per pagina
*/
CaricaDdl({2196},{2197},2);
});
function CaricaDdl(idDdl1,idDdl2,NChr){
$(document).ready(function(){
if($("#question"+idDdl1).hasClass('list-dropdown')){
$("#question"+idDdl1+" div.dropdown-item").each(function(index){
var strObjDdl1 = jqSelector($(this).find("select").eq(0).attr('id'));
$("#"+strObjDdl1).change(function(){
var FiltroValore=$("#"+strObjDdl1).val();
//ora mi ciclo i valori della ddl secondaria
if($("#question"+idDdl2).hasClass('list-dropdown')){
$("#question"+idDdl2+" div.dropdown-item").each(function(index){
var strObjDdl2 = jqSelector($(this).find("select").eq(0).attr('id'));
var idNewSelectFilter = jqSelector('select'+idDdl2+'_'+index);
var NewSelectElement = "<select id='"+idNewSelectFilter+"' class='form-control'><option value=''>"+$("#"+strObjDdl2+" option[value='']:first").text()+"</option></select>";
$("#"+strObjDdl2).hide();
//se non esiste già
if($("#"+idNewSelectFilter).length==0){
$("#"+strObjDdl2).after(NewSelectElement);
}
$("#"+strObjDdl2).val('');
$('#'+idNewSelectFilter).val('');
$('#'+idNewSelectFilter+' option').not(':first').remove();
if(FiltroValore==""){
$('#'+idNewSelectFilter).hide();
}
else{
$('#'+idNewSelectFilter).show();
$("#"+strObjDdl2).find('option').each(function(){
if($(this).attr('value').substring(0, $(this).attr('value').length - NChr)==FiltroValore){
$(this).clone().appendTo('#'+idNewSelectFilter);
}
});
}
$("#"+idNewSelectFilter).change(function(){
$('#'+strObjDdl2).val($(this).val());
saveval=$('#'+strObjDdl1).val();
$('#'+strObjDdl2).trigger('change');
if($(this).val()==""){
$('#'+strObjDdl1).val(saveval);
$('#'+strObjDdl1).trigger('change');
$('#'+strObjDdl2).val($(this).val(""));
}
});
if(FiltroValore==""){
$('#'+strObjDdl2).show();
}
});
}
});
});
}
});
}
function jqSelector(str) {
return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
}
</script>
The topic has been locked.