Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema somma dinamica su onchange

    Ciao a tutti. Avrei bisogno del vostro aiuto per risolvere un problema.
    Lo script dovrebbe eseguire il calcolo del prezzo di ciascun prodotto per la quantità e mostrare
    la somma parziale e quella complessiva. Funziona perfettamente nel caso la scelta del valore della select non venga modificata, in caso contratrio il totale parziale e quello globabe non vengono più modificati. Qualcuno di voi sarebbe così gentile da dargli un'occhiata? Grazie.

    codice:
    <script type="text/javascript">
    var prezzi= new Array(0,30.20,40.00,14.60,15.00,19.50)
    function Cambia (j){
    for(i=0; i<document.modulo.elements["art"+j].options.length; i++)
    if(document.modulo.elements["art"+j].options[i].selected)
    document.modulo.elements["pz"+j].value=prezzi[i].toFixed(2);
    }
    
    function calcparz(k){
    document.modulo.elements["par"+k].value=(document.modulo.elements["qt"+k].value*document.modulo.elements["pz"+k].value).toFixed(2)
    }
    
    function tot(){
    document.modulo.stot.value=((document.modulo.par0.value-0)+(document.modulo.par1.value-0)+(document.modulo.par2.value-0)).toFixed(2)
    document.modulo.qtot.value=(document.modulo.qt0.value-0)+(document.modulo.qt1.value-0)+(document.modulo.qt2.value-0)
    }
    //creato da giorgio casali
    </script>

    codice:
    <form name="modulo" METHOD="POST">
    <table>
    <tr>
    <td colspan="4"><center>TABELLA ORDINI</center></td>
    </tr>
    <tr>
    <td><DIV ALIGN="CENTER">articolo </DIV></td>
    <td><DIV ALIGN="CENTER">quantit&agrave;</DIV></td>
    <td><DIV ALIGN="CENTER">prezzo</DIV></td>
    <td><DIV ALIGN="CENTER">Totale parziale</DIV></td>
    </tr>
    <tr>
    <td><select name="art0" onChange="Cambia(0);">
    					   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="Libro 5">Libro 5</option>
    	</select>
    </td>
    	 <td><input type="text" name="qt0" onChange="calcparz(0); tot();"></td>
    	 <td><input type="text" name="pz0" value="" onChange="return false;"></td>
    	 <td><input type="text" name="par0" onChange="tot();"></td>
    </tr>
    <tr>
    	<td><select name="art1" onChange="Cambia(1);">
    					   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="">Libro 5</option>
    	</select>
    </td>
    	 <td><input type="text" name="qt1" onChange="calcparz(1); tot()"></td>
    	 <td><input type="text" name="pz1" value="" onChange="return false;"></td>
    	 <td><input type="text" name="par1" onChange="tot();"></td>
    </tr>
    <tr>
    	<td><select name="art2" onChange="Cambia(2);">
    					   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="Libro 5">Libro 5</option>
    		</select>
    	 </td>
    	 <td><input type="text" name="qt2" onChange="calcparz(2); tot()"></td>
    	 <td><input type="text" name="pz2" value="" onChange="return false;"></td>
    	 <td><input type="text" name="par2" onChange="tot();"></td>
    </tr>
    <tr>
    	<td>Quantità totale</td>
    	<td><input type="text" name="qtot" value="0"></td>
    	<td>Spesa complessiva</td>
    	<td><input type="text" name="stot" value="0"></td>
    </tr>
    </table>		
    
    <div style="position:absolute; left:320; top:300;">
    <!--
    <input type="submit" name="invia" value="Invia">
    -->
    <input type="reset" name="reset" value="Annulla">
    </div>
    </form>

  2. #2
    Suppongo che il problema stia nella funzione calcparz()

    Ho provato a modificare

    function calcparz(k){
    document.modulo.elements["par"+k].value=(document.modulo.elements["qt"+k].value*document.modulo.elements["pz"+k].value).toFixed(2)
    }

    con
    codice:
    function calcparz(k){
    document.modulo.elements["par"+k].value=(document.modulo.elements["qt"+k].value*document.modulo.elements["pz"+k].options[document.modulo.elements["pz"+k].selectedIndex].value).toFixed(2)
    }
    ma così non funziona proprio per niente.

  3. #3
    Sono ancora qui. Più o meno ho risolto il mio problema però mi è stato detto che questo script
    sotto macintosh con explorer 5.2.3 non funziona. Qualcuno di voi potrebbe copincollarlo e dirmi il motivo? Mi fareste un grosso favore. Attendo fiducioso.
    codice:
    <html>
    <head>
    <title>tabella dinamica</title>
    <script type="text/javascript">
    // qui vanno i prezzi dei libri in corrispondenza all'ordine usato nelle select.
    // il primo valore dell'array è 0 per avere la prima option delle select vuota
    var prezzi= new Array(0,10.15,12.00,22.50,18.00,15.50)
    function numerico(n){
    if (isNaN(document.modulo.elements["qt"+n].value)){
    alert('Inserire un valore numerico')
    document.modulo.elements["qt"+n].value = ""
    document.modulo.elements["qt"+n].focus();
    return false; }
    }
    
    function Cambia(j){
    for(i=0; i<document.modulo.elements["art"+j].options.length; i++)
    if(document.modulo.elements["art"+j].options[i].selected)
    document.modulo.elements["pz"+j].value=prezzi[i].toFixed(2);
    }
    
    function calcparz(k){
    document.modulo.elements["par"+k].value=(document.modulo.elements["qt"+k].value*document.modulo.elements["pz"+k].value).toFixed(2)
    }
    
    function tot(){
    document.modulo.stot.value=((document.modulo.par0.value-0)+(document.modulo.par1.value-0)+(document.modulo.par2.value-0)+(document.modulo.par3.value-0)+(document.modulo.par4.value-0)).toFixed(2)
    document.modulo.stot.value= (parseFloat(document.modulo.stot.value)+parseFloat(document.modulo.spedizione.value)).toFixed(2)
    document.modulo.qtot.value=(document.modulo.qt0.value-0)+(document.modulo.qt1.value-0)+(document.modulo.qt2.value-0)+(document.modulo.qt3.value-0)+(document.modulo.qt4.value-0)
    }
    </script>
    </head>
    
    <body bgcolor="#CCCCCC">
    <form name="modulo" method="post">
    <table>
    <tr>
    <td colspan="4"><center>TABELLA ORDINI</center></td>
    </tr>
    <tr>
    <td><div align="center">Articolo </div></td>
    <td><div align="center">Quantit&agrave;</div></td>
    <td><div align="center">Prezzo</div></td>
    <td><div align="center">Totale parziale</div></td>
    </tr>
    <tr>
    <td><select name="art0" onchange="Cambia(0);calcparz(0);tot();">
    					   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="Libro 5">Libro 5</option>
    	</select>
    </td>
    	 <td><input type="text" name="qt0" onchange="calcparz(0); tot(); return numerico(0)"></td>
    	 <td><input type="text" name="pz0" value="" onchange="return false;" readonly></td>
    	 <td><input type="text" name="par0" onchange="tot();" readonly></td>
    </tr>
    <tr>
    	<td><select name="art1" onchange="Cambia(1);calcparz(1);tot();">
    					   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="">Libro 5</option>
    	</select>
    </td>
    	 <td><input type="text" name="qt1" onchange="calcparz(1); tot(); return numerico(1)" ></td>
    	 <td><input type="text" name="pz1" value="" onchange="return false;" readonly></td>
    	 <td><input type="text" name="par1" onchange="tot();" readonly></td>
    </tr>
    <tr>
    	<td><select name="art2" onchange="Cambia(2);calcparz(2);tot();">
    					   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="Libro 5">Libro 5</option>
    		</select>
    	 </td>
    	 <td><input type="text" name="qt2" onchange="calcparz(2); tot(); return numerico(2)"></td>
    	 <td><input type="text" name="pz2" value="" onchange="return false;" readonly></td>
    	 <td><input type="text" name="par2" onchange="tot();" readonly></td>
    </tr>
    <tr>
    	<td><select name="art3" onchange="Cambia(3);calcparz(3);tot();">
    			   		   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="Libro 5">Libro 5</option>
    		</select>
    	  </td>
    	  <td><input type="text" name="qt3" onchange="calcparz(3); tot(); return numerico(3)"></td>
    	  <td><input type="text" name="pz3" value="" onchange="return false;" readonly></td>
    	  <td><input type="text" name="par3" onchange="tot();" readonly></td>
    </tr>
    <tr>
    	<td><select name="art4" onchange="Cambia(4);calcparz(4);tot();">
    					   <option value="">Scegli libro</option>
    					   <option value="Libro 1">Libro 1</option>
    					   <option value="Libro 2">Libro 2</option>
    					   <option value="Libro 3">Libro 3</option>
    					   <option value="Libro 4">Libro 4</option>
    					   <option value="Libro 5">Libro 5</option>
    		 </select>
    	  </td>
    	  <td><input type="text" name="qt4" onchange="calcparz(4); tot(); return numerico(4)"></td>
    	  <td><input type="text" name="pz4" value="" onchange="return false;" readonly></td>
    	  <td><input type="text" name="par4" onchange="tot();" readonly></td>
    </tr>
    <tr>
    <tr>
    <td>Spese spedizione</td
    ><td></td>
    <td></td>
    <td><input type="text" name="spedizione" value="5.00" readonly></td>
    </tr>
    	<td>Quantità totale</td>
    	<td><input type="text" name="qtot" value="0" readonly></td>
    	<td>Spesa complessiva</td>
    	<td><input type="text" name="stot" value="0" readonly></td>
    </tr>
    </table>		
    
    
    <input type="submit" name="invia" value="Invia">
    <input type="reset" name="reset" value="Annulla">
    </div>
    </form> 
    </body>
    </html>
    Possibile che il problema stia nell'uso di toFixed(2) ? :master:

  4. #4
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.