Somma e controllo su totale in domanda a griglia

Compatibilità:IdSurvey 5IdSurvey 6

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. Lo script non effettua un controllo sui numeri negativi, che vengono in questo caso considerati pari a 0 ai fini della sommatoria.

Nota: 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

Incollare il seguente script sul Client script della pagina contenente la domanda a griglia.

E’ possibile modificare il messaggio d’errore e il totale che devono formare i vari valori della tabella (nello script sotto in rosso). La somma verrà visualizzata a fondo pagina con la dicitura amount (è possibile modificarla, cambiando la parte indicata nello script sotto in verde).

<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?