Selezione singola su colonna

 

Compatibilità:IdSurvey 5IdSurvey 6

Questo javascript può essere usato in griglie con domande a scelta singola per obbligare una selezione singola su colonna (il valore di ciascuna colonna può essere selezionato solo una volta nella griglia). Questo script funziona solo con le griglie a selezione singola.

Istruzioni

Attenzione: il numero di righe e colonne deve essere lo stesso.

Incolla lo script nella casella Client script che trovi nel bottone ingranaggio della pagina.

VERSIONE IDSURVEY 5.5:

<script>
      
      $(":radio").on("change",function(){    	
          
          var num = $(this).closest("tr").find(":radio").index($(this));
          $(".grid-question-table tr").each(function(){
              console.log($(this).find("radio:eq("+num+")").is(":checked"));
              if($(this).find(":radio:eq("+num+")").is(":checked")){
                  $(this).find(":radio:eq("+num+")").prop("checked",false);
                }
            });
          $(this).prop("checked",true);
        });
      
      $(":text").on("keyup focusout",function(){
          $(":text").prop("disabled",false);
        });
      
      
  </script>

VERSIONE IDSURVEY 6:

<script>

  $(function(){
    var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) && $(window).width() <= 800; var isMobileBrowser = (typeof _customCheckMobileBrowser == "function") ? _customCheckMobileBrowser() : isMobile; if(isMobileBrowser){ $(".survey-page-wrapper #page .group-question-sub-elements > .sub-elements-wrapper :radio").on("change", function(){
        var main = $(this).closest(".main-responses");        
        var li = $(this).closest("li");
        var index = main.find("li").index(li);
        var currentRadio = $(this).closest(".sub-elements-wrapper");

        $(".survey-page-wrapper .group-question-sub-elements > .sub-elements-wrapper .sub-elements-wrapper").each(function(){
          if(!$(this).is(currentRadio)){
            if($(this).find(".main-responses").find("li").eq(index).find(":radio").prop("checked") == true)
              $(this).find(".main-responses").find("li").eq(index).find(":radio").prop("checked", false);
          }
        });

      });
    }else{
      $(".grid-question-table :radio").on("change", function(){
        var table = $(this).closest("table");
        var tr = $(this).closest("tr");
        var index = tr.find(":radio").index($(this));
        table.find("tr").not(tr).each(function(){
          if($(this).find(":radio").eq(index).prop("checked") == true)
            $(this).find(":radio").prop("checked", false);
        });
      });
    }
  });
</script>

Se vuoi rendere la domanda opzionale (ad esempio perche hai 6 item ma vuoi che vengano indicati solo i primi 3 per preferenza), il comportamento varia dalla versione 5 alla versione 6. Nel secondo caso è possibile impostare le domande come opzionali, mentre per la 5 vai nella domanda della griglia che vuoi usare e aggiungi un’altra colonna finale nella domanda.

Incolla lo script nella casella Client script che trovi nel bottone ingranaggio della pagina.

VERSIONE IDSURVEY 5.5:

<style>
.grid-question-table tbody tr td:last-child,
.grid-question-table tfoot th:last-child,
.grid-question-table thead th:last-child{
display:none;
}
</style>
<script>
$(".grid-question-table tr").each(function(){
$(this).find("td:last").find(":radio").prop("checked",true);
});
$(":radio").on("change",function(){
var num = $(this).closest("tr").find(":radio").index($(this));
console.log(num);
$(".grid-question-table tr").each(function(){
console.log($(this).find("radio:eq("+num+")").is(":checked"));
if($(this).find(":radio:eq("+num+")").is(":checked")){
$(this).find(":radio:eq("+num+")").prop("checked",false);
$(this).find(":radio:last").prop("checked",true);
}
});
$(this).prop("checked",true);
});
$(":text").on("keyup focusout",function(){
$(":text").prop("disabled",false);
});
</script>

selezione_singola_colonna

Leave A Comment?