Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Caricamento Regioni-Province per la Versione 3.3.1+180214 su due dropdown

  • oreslas
  • oreslas's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 9 months ago - 6 years 9 months ago #164288 by oreslas
In allegato il gruppo di domande con il funzionamento descritto in oggetto.
IMPORTANTE: modificare sempre i parametri ID con quelli della vostra indagine.

Di seguito una sorta di guida per consentirvi di usarlo anche con altri valori


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
Last edit: 6 years 9 months ago by oreslas.
The topic has been locked.
More
6 years 9 months ago #164292 by Frasca
Grazie mille ma non riesco ad aprire e quindi anche importare il file perchè è in formato .lsg
The topic has been locked.
  • oreslas
  • oreslas's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 9 months ago #164295 by oreslas
Ciao frasca,
il file .lsg è un gruppo di domande, quindi dovresti, in una indagine, creare un gruppo di domande e da li importare questo file.
Mi raccomando, una volta importato il gruppo di domande, vedri che LS assegna alla ddl1 ed alla ddl1 un id che sarà ovviamente diverso da quello che trovi nello script presente nella ddl1. Prima di eseguire e provare il tutto modifica l'id con quelli tuoi.
The following user(s) said Thank You: Frasca
The topic has been locked.
More
6 years 9 months ago #164323 by Frasca
Buongiorno, sto apportando le modifiche che mi hai gentilmente spiegato ieri ma sul punto numero 4 mi sono bloccato:
"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."
Io ho messo come hai detto tu in un unico gruppo di domande una domanda con le Regioni e un'altra con le Provine, ho messo lo script nella prima domanda cambiando ad ogni "IDdellaDDL1" e "IDdellaDDL2" l'ID delle due domande, ho anche messo per esempio nella prima domanda dove ci sono le Regioni Pimonte=A e le sue Province A1,A2,etc...
Non mi viene perchè sicuramente non ho inserito qualcosa ma non riesco a capire quale, premetto che uso da pochi giorni Limesurvey quindi mi scuso per la mia ignoranza.
Grazie mille e buona giornata
The topic has been locked.
  • oreslas
  • oreslas's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 9 months ago #164325 by oreslas
Ciao Frasca,
nessun problema, ci mancherebbe.
Ma quindi non hai provato ad importare il file .lsg che ho messo qui nel post? Perchè in questo file ci sono già le regioni e le province.
A questo punto allora se riesci ad esportare le tue domande, o il tuo gruppo di domande, mandamelo così lo controllo io.

PS: Io poi non so quale sia la versione che stai usando anche perchè lo script funziona sicuramente con la versione 3.3.1
The following user(s) said Thank You: Frasca
The topic has been locked.
More
6 years 9 months ago #164326 by Frasca
Versione 2.72.6 di Limesurvey.
Ho importato il tuo file e ho tutte le Regioni e Province.
Ti invio il mio gruppo di domande:

File Attachment:

File Name: limesurvey...p_49.lsg
File Size:45 KB

File Attachment:

File Name: limesurvey...p_49.lsg
File Size:45 KB

File Attachment:

File Name: limesurvey...p_49.lsg
File Size:45 KB

File Attachment:

File Name: limesurvey...p_49.lsg
File Size:45 KB
The topic has been locked.
  • oreslas
  • oreslas's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 9 months ago - 6 years 9 months ago #164327 by oreslas
In allegato ti invio nuovamente il gruppo modificato che funziona correttamente.

IMPORTANTE....l'unico posto dove devi modificare l'id delle domande è in fase di chiamata della funzione, dove nello script trovi

CaricaDdl({620},{621},2);

Quindi importa questo gruppo che ti ho allegato e nello script presente nella ddl1 (quella delle regioni) limitati a sostituire il numero 620 con l'id della tua ddl1 (dove hai le regioni) ed il numero 621 con l'id della tua ddl2 (dove hai le province).

Mi raccomando usa il mio gruppo di domande perchè per farlo funzionare ho dovuto modificare anche i codici delle tue province.

Ah, dimenticavo, la versione che usi non è detto che sia compatibile con questo script, io purtroppo uso l'ultima versione e funziona correttamente.
Last edit: 6 years 9 months ago by oreslas.
The following user(s) said Thank You: Frasca
The topic has been locked.
More
6 years 9 months ago #164333 by Frasca
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.
  • oreslas
  • oreslas's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 9 months ago #164336 by oreslas
Se hai caricato il mio gruppo di domande e modificato correttamente i parametri con i tuoi id ancora non funziona significa che non è compatibile con la versione di LS che stai usando.

Io purtroppo ho installato solo quella 3.3.1 quindi non saprei cosa altro fare....mi dispiace
The following user(s) said Thank You: Frasca
The topic has been locked.
Moderators: lfanfoniholchtpartner

Lime-years ahead

Online-surveys for every purse and purpose