Somma e controllo su totale in domanda a griglia

Compatibilità: IdSurvey 6 IdSurvey 7

Questo script somma i valori numerici interi positivi di una colonna di una griglia di testo e mostra il totale in fondo alla griglia. Inoltre, effettua un controllo sul totale impedendo di procedere se il numero è diverso da quello impostato nello script.

Note

  • Lo script non effettua un controllo sui numeri negativi. Questi verranno considerati pari a 0 ai fini della sommatoria.
  • La pagina su cui è inserito lo script dovrà ospitare solo la domanda a griglia semplice.
  • Lo script non è compatibile con la compilazione da smartphone di griglie 3D e griglie semplici con più colonne.

Istruzioni

Incolla il seguente script sul box “Client script” della pagina contenente la domanda a griglia.

È possibile modificare il messaggio d’errore e il totale che devono formare i valori della tabella (nello script sotto in rosso).

La somma verrà visualizzata a fondo pagina con la dicitura amount. È possibile modificare questa dicitura cambiando la parte indicata in verde nello script che segue.

<clientscript>
 <script>
 /* This script check the sum of all numbers typed on text fields on a page and show an alert if the amount is not equal to the set amount.
That amount is shown below the text column.*/
 var errorMessage = "Controlla i dati immessi, il totale delle tue risposte deve essere uguale a 100. (lettere o punteggiatura non sono ammessi)" // you can change the alert text
 var amount = 100 // you can modify the number to check
 /* don't modify the script below */
 var somma = 0;
 $(".grid-question-table.table").find("tfoot th:last").html("amount: <span id='totSomma'> 0 </span>").show();
 function sommaTutto(){
 somma= 0;
 $(":text:visible, input[type='number']:visible").each(function(e){
 var sp = 0;
 sp= parseInt($(this).val());
 if(!isNaN(sp) && sp >= 0)
 somma += sp;
 $("#totSomma").html(somma);
 });
 }
 $("input[type='number'], :text").on("keyup change", function(){
 sommaTutto();
 });
 $("input[type='number']:first:visible, :text:first:visible").trigger("change");
 $("#nextPage").off("click").on("click",function(e){
 sommaTutto();
 if(somma==amount){
 nextPageClickHandler.call(this, e);
 }else{
 e.preventDefault();
 e.stopPropagation();
 alert(errorMessage);
 return false;
 }
 });
 </script>
 <style>
 .grid-question-table tfoot{
 display:table-footer-group !important;
 }
 </style>
 </clientscript>

Totale_Griglia

Leave A Comment?