Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Variabili nascoste con importi da sommare

    Ciao a tutti,

    ho 3 campi in cui immetto degli importi, ed in più una lista a tendina in cui posso scegliere dei moltiplicatori.
    Vorrei sapere se fosse possibile creare una variabile nascosta associata all'importo immesso moltiplicato in base alla scelta del moltiplicatore.
    Mi spiego meglio, ad esempio se nel campo Importo 1 inserisco il numero 5
    e scelgo il moltiplicatore 6 l'importo da memorizzare nella variabile nascosta sarà 5 x 2 = 10.

    Le varie opzioni sarebbero così:


    1 -> importo annuale (quindi importo x 1)
    2 -> importo semestrale (quindi x 2)
    3 -> importo quadrimestrale (quindi x 4)
    4 -> importo trimestrale (quindi x 3)
    6 -> importo bimestrale (quindi x 2)
    12 -> indica che l'importo è mensile x 12

    Alla fine vorrei sommare l'importo appartenente nelle variabili nascoste e fare apparire il totale dinamicamente (come già implementato nella funzione che riporto sotto).

    Questo è il mio codice attuale...

    codice:
    <html>
    
    	<head>
    
    <script language="javascript" type="text/javascript">
    
    
    var campi = new Array("imp1", "imp2", "imp3"); 
    
    function somma(ff) {
      var tot = 0;
      for(var i=0; i<campi.length; i++) {
        var c = ff.elements[campi[i]].value;
        if(c=="") c="0";
        if(c=='NaN') {alert("Not A Number"); c=0;}
        tot += parseInt(c,10);
      }
      ff.Totale.value = tot;
    }
    
    </script>
    
    	</head>
    
    			<body>	
    
    			<form name="modulo">	
    
    			<table align="center">
    
    			<tr>	
    
    			<td>Importo 1</td>
    			<td><input name="imp1" type="text" size="10" onblur="somma(this.form)" />  </td>
    			
    			<td><select name="MoltImp1" size="1" maxLength="50">
      			
               		<option>1</option>
               		<option>2</option>
               		<option>3</option>
               		<option>4</option>
               		<option>6</option>
               		<option selected>12</option>
    			</select>			
    
    			
    			</tr>
    
    			<tr>
    			<td>Importo 2</td>
    			<td><input name="imp2" type="text" size="10" onblur="somma(this.form)" />  </td>
    			
    			<td><select name="MoltImp2" size="1" maxLength="50">
      			
               		<option selected>1</option>
               		<option>2</option>
               		<option>3</option>
               		<option>4</option>
               		<option>6</option>
               		<option>12</option>
    			</select>
    
    
    			
    			</tr>
    		
    			<tr>
    			<td>Importo 3</td>
    			<td><input name="imp3" type="text" size="10" onblur="somma(this.form)" /> </td>
    			
    			<td><select name="MoltImp3" size="1" maxLength="50">
      			
               		<option selected>1</option>
               		<option>2</option>
               		<option>3</option>
               		<option>4</option>
               		<option>6</option>
               		<option>12</option>
    			</select>
    
    			</tr>
    
    			<tr>
    			<td>TOTALE</td>
    			<td><input name="Totale" type="text" size="10" readonly="readonly" /></td>
    			</tr>
    
    			</table>
    
    			</body>
    
    			</form>
    
    </html>
    qualche aiuto per favore? Non saprei come procedere

    Grazie

  2. #2
    Nessun consiglio utile? Non è possibile ricorrere a JS?

  3. #3
    Ultimo disperato up poi "archivio" sto thread :master:


  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    la cosa e` banale. Ma devi modificare il codice HTML:
    codice:
    <select name="MoltImp1" size="1" maxLength="50">
               		<option value="1">1</option>
               		<option value="2">2</option>
               		<option value="4">3</option>
    ...
    Poi nello script:
    codice:
     ff.Totale.value = tot * ff.MoltImp1.options[ff.MoltImp1.selectedIndex].value;
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Uuuuu grazie Mich_ avevo quasi perso le speranze


  6. #6
    E se io avessi degli importi (input text) non soggetti a moltiplicatore, da sommare a quelli soggetti a moltiplicatore come cambierebbe la funzione per fare il totale?

    codice:
    <html>
    
    	<head>
    
    <script language="javascript" type="text/javascript">
    
    
    var campi = new Array("imp1", "imp2", "imp3"); 
    
    function somma(ff) {
      var tot = 0;
      for(var i=0; i<campi.length; i++) {
        var c = ff.elements[campi[i]].value;
        if(c=="") c="0";
        if(c=='NaN') {alert("Not A Number"); c=0;}
        tot += parseInt(c,10);
      }
      ff.Totale.value = tot * ff.MoltImp1.options[ff.MoltImp1.selectedIndex].value;
    }
    
    </script>
    
    	</head>
    
    			<body>	
    
    			<form name="modulo">	
    
    			<table align="center">
    
    
    			<tr>
    			<td>Campo 1</td>
    			<td><input name="campo1" type="text" size="10" onblur="somma(this.form)" />  </td>
    			<td></td>
    			</tr>
    
    			<tr>
    			<td>Campo 2</td>
    			<td><input name="campo2" type="text" size="10" onblur="somma(this.form)" />  </td>
    			<td></td>
    			</tr>
    
    			<tr>	
    
    			<td>Importo 1</td>
    			<td><input name="imp1" type="text" size="10" onblur="somma(this.form)" />  </td>
    			
    			<td><select name="MoltImp1" size="1" maxLength="50">
      			
               		<option value="1">1</option>
               		<option value="2">2</option>
               		<option value="4">3</option>
               		<option value="3">4</option>
               		<option value="6">6</option>
               		<option value="12" selected>12</option>
    			</select>			
    
    			</td>
    			</tr>
    
    			<tr>
    			<td>Importo 2</td>
    			<td><input name="imp2" type="text" size="10" onblur="somma(this.form)" />  </td>
    			
    			<td><select name="MoltImp2" size="1" maxLength="50">
      			
               		<option value="1" selected>1</option>
               		<option value="2">2</option>
               		<option value="4">3</option>
               		<option value="3">4</option>
               		<option value="6">6</option>
               		<option value="12">12</option>
    			</select>
    
    
    			</td>
    			</tr>
    		
    			<tr>
    			<td>Importo 3</td>
    			<td><input name="imp3" type="text" size="10" onblur="somma(this.form)" /> </td>
    			
    			<td><select name="MoltImp3" size="1" maxLength="50">
      			
               		<option value="1" selected>1</option>
               		<option value="2">2</option>
               		<option value="4">3</option>
               		<option value="3">4</option>
               		<option value="6">6</option>
               		<option value="12">12</option>
    			</select>
    	
    			</td>
    			</tr>
    
    			<tr>
    			<td>TOTALE</td>
    			<td><input name="Totale" type="text" size="10" readonly="readonly" /></td>
    			</tr>
    
    			</table>
    
    			</body>
    
    			</form>
    
    </html>

  7. #7
    Ho cambiato ancora così... funziona un po'male nel senso che io compilo i campi e non mi fa vedere subito il totale... devo cliccare di qua e di la selezionare 1 o 2 altri campi... prima che mi mostra il totale corretto... mah

    se ad esempio completo campo1 e campo2 e poi imp1... devo cliccare su TotaleMolt e poi fuori prima che mi completi il campo Totale con la somma di tutti!

    Dovrei togliere l'onblur del campo TotaleMolt e mettere qualcos'altro?

    codice:
    <html>
    
    	<head>
    
    <script language="javascript" type="text/javascript">
    
    
    var campi = new Array("imp1", "imp2", "imp3"); 
    
    function molt(ff) {
      var tot = 0;
      for(var i=0; i<campi.length; i++) {
        var c = ff.elements[campi[i]].value;
        if(c=="") c="0";
        if(c=='NaN') {alert("Not A Number"); c=0;}
        tot += parseInt(c,10);
      }
      ff.TotaleMolt.value = (ff.imp1.value * ff.MoltImp1.options[ff.MoltImp1.selectedIndex].value) + (ff.imp2.value * ff.MoltImp2.options[ff.MoltImp2.selectedIndex].value) + (ff.imp3.value * ff.MoltImp3.options[ff.MoltImp3.selectedIndex].value);
    }
    
    var campi = new Array("campo1", "campo2", "TotaleMolt"); 
    
    function somma(ff) {
      var tot = 0;
      for(var i=0; i<campi.length; i++) {
        var c = ff.elements[campi[i]].value;
        if(c=="") c="0";
        if(c=='NaN') {alert("Not A Number"); c=0;}
        tot += parseInt(c,10);
      }
      ff.Totale.value = tot;
    }
    
    </script>
    
    	</head>
    
    			<body>	
    
    			<form name="modulo">	
    
    			<table align="center">
    
    
    			<tr>
    			<td>Campo 1</td>
    			<td><input name="campo1" type="text" size="10" onblur="somma(this.form)" />  </td>
    			<td></td>
    			</tr>
    
    			<tr>
    			<td>Campo 2</td>
    			<td><input name="campo2" type="text" size="10" onblur="somma(this.form)" />  </td>
    			<td></td>
    			</tr>
    
    			<tr>	
    
    			<td>Importo 1</td>
    			<td><input name="imp1" type="text" size="10" onblur="molt(this.form)" />  </td>
    			
    			<td><select name="MoltImp1" size="1" maxLength="50">
      			
               		<option value="1">1</option>
               		<option value="2">2</option>
               		<option value="4">3</option>
               		<option value="3">4</option>
               		<option value="6">6</option>
               		<option value="12" selected>12</option>
    			</select>			
    
    			</td>
    			</tr>
    
    			<tr>
    			<td>Importo 2</td>
    			<td><input name="imp2" type="text" size="10" onblur="molt(this.form)" />  </td>
    			
    			<td><select name="MoltImp2" size="1" maxLength="50">
      			
               		<option value="1" selected>1</option>
               		<option value="2">2</option>
               		<option value="4">3</option>
               		<option value="3">4</option>
               		<option value="6">6</option>
               		<option value="12">12</option>
    			</select>
    
    
    			</td>
    			</tr>
    		
    			<tr>
    			<td>Importo 3</td>
    			<td><input name="imp3" type="text" size="10" onblur="molt(this.form)" /> </td>
    			
    			<td><select name="MoltImp3" size="1" maxLength="50">
      			
               		<option value="1" selected>1</option>
               		<option value="2">2</option>
               		<option value="4">3</option>
               		<option value="3">4</option>
               		<option value="6">6</option>
               		<option value="12">12</option>
    			</select>
    	
    			</td>
    			</tr>
    
    
    			<tr>
    			<td>Totale Molt</td>
    			<td><input name="TotaleMolt" type="text" size="10" onblur="somma(this.form)" /> </td>
    			<td></td>
    			</tr>
    
    			<tr>
    			<td>TOTALE</td>
    			<td><input name="Totale" type="text" size="10" readonly="readonly" /></td>
    			</tr>
    
    			</table>
    
    			</body>
    
    			</form>
    
    </html>

  8. #8
    Rispiego che è meglio

    Se metto un numero in campo1, un numero in campo2, un numero in imp1 grazie all'onblur mi calcola il TotaleMolt (che riguarda solo imp1 x il moltiplicatore).

    Per far sì che invece mi calcoli il Totale di tutti i campi immessi (ovvero campo1, campo2 e TotaleMolt) devo ancora andare a cliccare su campo1 e poi su campo2... poi me lo calcola!

    Come mai?

  9. #9
    Io avrei la necessità di nascondere questo campo con 'type=hidden'


    codice:
    <td>Totale Molt</td>
    <td><input name="TotaleMolt" type="text" size="10" onblur="somma(this.form)" /> </td>

    perciò ho bisogno di eliminare l'onblur ma che alla fine mi sommi l'importo risultante (dalle operazioni riguardanti i moltiplicatori)...

    è possibile? Come si fa? Consigli pf?

    Grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se il campo viene usato dalla funzione, e gli altri campi chiamano comunque la funzione, non vedo quale sia il problema.
    Non ti serve chiamare la funzione da quel campo, se e` un type="hidden"
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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 © 2024 vBulletin Solutions, Inc. All rights reserved.