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

    Help su funzione che "moltiplica"

    Ciao a tutti,

    dovrei far "interagire" due funzioni, una che prende dei valori da dei campi e in base ad una scelta di una tendina ad essa legata prenda o meno in considerazione il valore inserito nel campo; fatto ciò poi questi particolari campi dovranno essere sommati ad altri che non sottostanno ad una scelta da menu a tendina.
    Mi spiego meglio:

    ho questo campo:

    codice:
    <input name="SostImm" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" />
    che è associato a questa lista a tendina:

    codice:
    <select name="SostPropSostImmLT" size="1">
        <option value="Ospite" selected="selected">Ospite</option>
        <option value="Figli">Figli</option>
        <option value="Altre_persone">Altre persone</option>
    </select>
    io vorrei fare in modo che se l'utente immette un valore nel campo "SostImm" e sceglie dal menu a tendina "Ospite" questo valore venga preso in considerazione e quindi sommato agli altri campi soggetti ad una condizione del genere... ottenendo così un totale da sommare ad altri campi non soggetti a scelta da menu a tendina.

    I campi soggetti a menu a tendina sono 4.

    Ho provato a fare la funzione che "moltiplica" ovvero dovrebbe fare SostImm*1 se si è scelto "Ospite" oppure SostImm*0 se non si è scelto "Ospite"... la funzione è questa:

    [code]
    var campi = new Array("SostImm", "AltraSostImm", "QuotePart", "SostAziendale"); array contenente i campi da "moltiplicare

    function molt_sost(ff) {

    with(document.inviadati_Sostanza_rette_NT_user) {

    var prop1 = document.inviadati_Sostanza_rette_NT_user.SostProp SostImmLT.value; creo una variabile che va a prendere il valore immesso nel menu a tendina ovvero "Ospite" o "Figli" o "Altre_persone"
    var prop2 = document.inviadati_Sostanza_rette_NT_user.SostProp AltraSostImmLT.value;
    var prop3 = document.inviadati_Sostanza_rette_NT_user.SostProp QuotePartLT.value;
    var prop4 = document.inviadati_Sostanza_rette_NT_user.SostProp SostAziendaleLT.value;

    eseguo il controllo ed in caso positivo assegno il valore 1 a prop1, in caso contrario 0
    if (prop1 == "Ospite") {
    prop1="1"
    }else{
    prop1="0"
    }


    if (prop2 == "Ospite") {
    prop2="1"
    }else{
    prop2="0"
    }


    if (prop3 == "Ospite") {
    prop3="1"
    }else{
    prop3="0"
    }


    if (prop4 == "Ospite") {
    prop4="1"
    }else{
    prop4="0"
    }

    vado a verificare il valore dei campi


    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);
    }

    assegno al campo TotaleMoltSostanza (campo nascosto) il valore risultante dal valore immesso nei campi (es. SostImm) moltiplicato per 0 oppure per 1 a seconda della scelta del menu a tendina... sommati (i 4 campi)

    ff.TotaleMoltSostanza.value = (ff.SostImm.value * prop1)
    + (ff.AltraSostImm.value * prop2) +
    (ff.QuotePart.value * prop3)
    + (ff.SostAziendale.value * prop4);
    somma(ff);

    }
    }

    quando avrò il valore corretto in TotaleMoltSostanza verrà poi sommato grazie ad un'altra funzione che risulta essere performante.

    Ora il problema sta nella funzione che "moltiplica"... l'errore che mi dà è:

    document.inviadati_Sostanza_rette_NT_user.SostProp AltraSostImmLT.value
    è nullo o non è un oggetto

    spero che abbiate capito il mio problema anche se forse sono stato un po' confusionario

    Qualcuno ha dei suggerimenti in merito? Dove sbaglio?

    Grazie
    You see beauty I see pain, You see sky and I see acid rain

  2. #2
    UP

    riuppo e ripropongo il codice usando i tag appositi...

    codice:
    var campi = new Array("SostImm", "AltraSostImm", "QuotePart", "SostAziendale"); 
    
    
    function molt_sost(ff) {
    
    		  	with(document.inviadati_Sostanza_rette_NT_user) {	
    		  	
    		var prop1 = document.inviadati_Sostanza_rette_NT_user.SostPropSostImmLT.value;
    		var prop2 = document.inviadati_Sostanza_rette_NT_user.SostPropAltraSostImmLT.value;
    		var prop3 = document.inviadati_Sostanza_rette_NT_user.SostPropQuotePartLT.value;
    		var prop4 = document.inviadati_Sostanza_rette_NT_user.SostPropSostAziendaleLT.value;		  	
    			
    
    				if (prop1 == "Ospite") {
          				prop1="1"
        				}else{
    				prop1="0"
    				}
    
    
    				if (prop2 == "Ospite") {
          				prop2="1"
        				}else{
    				prop2="0"
    				}
    
    
    				if (prop3 == "Ospite") {
          				prop3="1"
        				}else{
    				prop3="0"
    				}
    
    
    				if (prop4 == "Ospite") {
          				prop4="1"
        				}else{
    				prop4="0"
    				}
    
    
    
      				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.TotaleMoltSostanza.value = (ff.SostImm.value * prop1) 
    				+ (ff.AltraSostImm.value * prop2) + 
    			       	(ff.QuotePart.value * prop3) 
    				+ (ff.SostAziendale.value * prop4);
    				somma(ff);
    
    			}
    		   }

    in questo modo non mi da nessun errore JS ma purtroppo non funziona... inserisco un importo, cambio la voce del menu a tendina fissato di base ad "Ospite" in "Figli" (ad esempio). Ma l'importo nella casella del Totale non cambia...

    HELP
    You see beauty I see pain, You see sky and I see acid rain

  3. #3
    provo a riuppare perché finora non vedo come risolvere

    You see beauty I see pain, You see sky and I see acid rain

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ci ho provato a ricreare l'ampbiente in cui lo script agisce, ma senza il form originale non ci riesco... per esempio: cos'e' "campi"? :master:

    Posta tutta la pagina o, meglio, un link alla stessa pubblicata.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    vedi sotto... (pasticcio )
    You see beauty I see pain, You see sky and I see acid rain

  6. #6
    Originariamente inviato da br1
    Ci ho provato a ricreare l'ampbiente in cui lo script agisce, ma senza il form originale non ci riesco... per esempio: cos'e' "campi"? :master:

    Posta tutta la pagina o, meglio, un link alla stessa pubblicata.

    ciao
    Ciao br1,

    grazie dell'interessamento purtroppo non posso pubblicare la pagina... ti posto la parte interessata qui:

    codice:
    <html>
    	<head>
    	
    
    			<link rel="stylesheet" href="stile.css">
    
    		<script type="text/javascript" src="Commenti_Sostanza.js"></script>
    
    		<script type="text/javascript" src="Aggiungi_Debiti_Sostanza.js"></script>
    
    		<script type="text/javascript" src="Controllo_Numeri_Sostanza.js"></script>
    	
    		<script type="text/javascript" src="Somma_Sostanza.js"></script>
    
    		<script type="text/javascript" src="Molt_Sostanza.js"></script>
    
    
    
    	</head>
    
    		<body onLoad="document.inviadati_Sostanza_rette_NT_user.SostImm.focus();">
    		
    
    				<form name="inviadati_Sostanza_rette_NT_user"  method="post" action = "Donazioni_rette_NT_user.asp">
    					 
    					
     
    
    
    
    					<table align ="center">
    
    						<tr>
    							<td></td>
    							<td></td>
    							<td></td>
    							<td>Sostanza di proprietà</td>		
    							<td align="center">Nome e cognome</td>
    						</tr> 
    
    						<tr>
    							<td>1) Sostanza immobiliare</td>
    							<td><input name="SostImm" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" />  </td>
    							<td><input name="Commento 1)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropSostImmLT" size="1">
               		    	    			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		            			    <option value="Altre_persone">Altre persone</option>
    			    	    			    </select>
    							</td>
    							<td><input name="SostPropSostImm" type="text" maxLength="40"  size="35">  </td>
    						</tr>
    
    						<tr>
    							<td>2) Titoli e collocamento capitali/ogni altro credito</td>
    							<td><input name="TitCollCapAltriCred" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />  </td>
    							<td><input name="Commento 2)" type="button" value="*" onClick="show_hide(this);"></td>
    						</tr>
    		
    						<tr>
    							<td>3) Assicurazione vita/rendita vitalizi</td>
    							<td><input name="AssVitaRendVital" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" /> </td>
    							<td><input name="Commento 3)" type="button" value="*" onClick="show_hide(this);"></td>
    						</tr>
    
    						<tr>
    							<td>4) Altra sostanza immobiliare</td>
    							<td><input name="AltraSostImm" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" />  </td>
    							<td><input name="Commento 4)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropAltraSostImmLT" size="1">
               	     	    	    			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		    	   			    <option value="Altre_persone">Altre persone</option>
    			    	    			    </select>
    							</td>
    							<td><input name="SostPropAltraSostImm" type="text" maxLength="40"  size="35">  </td>
    						</tr>			
    
    						<tr>
    							<td>5) Quote partecipazione</td>
    							<td><input name="QuotePart" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" /> </td>
    							<td><input name="Commento 5)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropQuotePartLT" size="1">
               		    	   			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		    	    			    <option value="Altre_persone">Altre persone</option>
    			    	    			    </select>
    							</td>
    							<td><input name="SostPropQuotePart" type="text" maxLength="40" size="35">  </td>
    						</tr>
    
    						<tr>
    							<td>6) Altra sostanza</td>
    							<td><input name="AltraSost" type="text" maxLength="10" size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" /> </td>
    							<td><input name="Commento 6)"  type="button" value="*" onClick="show_hide(this);"> </td>
    						</tr>
    
    						<tr>
    							<td>7) Veicoli a motore</td>
    							<td><input name="VeicMot" type="text" maxLength="10" size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" /> </td>
    							<td><input name="Commento 7)" type="button" value="*" onClick="show_hide(this);"> </td>
    						</tr>	
    	
    						<tr>
    							<td>8) Sostanza aziendale</td>
    							<td><input name="SostAziendale" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" /> </td>
    							<td><input name="Commento 8)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropSostAziendaleLT" size="1">
               		    	    			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		    	   			    <option value="Altre_persone">Altre persone</option>
    			    	   			    </select>
    							</td>
    							<td><input name="SostPropSostAziendale" type="text" maxLength="40" size="35">  </td>
    						</tr>
    
    						<tr>
    							<td>TOTALE</td>
    							<td><input name="TotaleSostanza" type="text" maxLength="12" size="10" class="importo" style="background:#FFFF00 ;" readonly></td>
    						</tr>
    
    
    					</table>
    	
    					<table>
    
    						<tr></tr>
    						<tr></tr>
    						<tr>
    
    						</tr>
    						<tr>	
    							<td>					
    																
    								<input name="TotaleMoltSostanza" type="hidden" size="10"/>
    
                                </form>
    in pratica la variabile campi raggruppa i 3 input associati al cambiamento del menu a tendina.
    You see beauty I see pain, You see sky and I see acid rain

  7. #7
    Ah poi una volta giunti al TotaleMoltSostanza questo verrà sommato agli altri campi con quest'altra funzione e nel TOTALE (TotaleSostanza) dovrà apparire il risultato che voglio

    codice:
    var campi = new Array("TitCollCapAltriCred", "AssVitaRendVital", "AltraSost", "VeicMot", "TotaleMoltSostanza"); 
    
    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";
        									tot += parseInt(c,10);
      								  }
      				ff.TotaleSostanza.value = tot;
    		   }
    You see beauty I see pain, You see sky and I see acid rain

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ci sono molti problemi... ma penso di averli corretti

    Per vedere le modifiche confronta questo con il tuo:
    codice:
    <html>
    	<head>
    	
    
    			<link rel="stylesheet" href="stile.css">
    
    		<script type="text/javascript" src="Commenti_Sostanza.js"></script>
    
    		<script type="text/javascript" src="Aggiungi_Debiti_Sostanza.js"></script>
    
    		<script type="text/javascript" src="Controllo_Numeri_Sostanza.js"></script>
    	
    		<script type="text/javascript" src="Somma_Sostanza.js"></script>
    
    		<script type="text/javascript" src="Molt_Sostanza.js"></script>
    <script>
    // riporto qui le istruzioni interessate al calcolo //
    
    var campi1 = new Array("SostImm", "AltraSostImm", "QuotePart", "SostAziendale"); 
    
    
    function molt_sost(ff) {
    	  	
    	var prop1 = (ff.SostPropSostImmLT.options[ff.SostPropSostImmLT.selectedIndex].value == "Ospite")?1:0;
    	var prop2 = ( ff.SostPropAltraSostImmLT.options[ff.SostPropAltraSostImmLT.selectedIndex].value=="Ospite")?1:0;
    	var prop3 = ( ff.SostPropQuotePartLT.options[ff.SostPropQuotePartLT.selectedIndex].value=="Ospite")?1:0;
    	var prop4 = ( ff.SostPropSostAziendaleLT.options[ff.SostPropSostAziendaleLT.selectedIndex].value=="Ospite")?1:0;
    
    
    	var tot = 0;
    	for(var i=0; i<campi1.length; i++) {
    		var c = ff.elements[campi1[i]].value;
    		if(!c) c=0;
    		if(isNaN(c)) {alert("Not A Number"); c=0;}
       		tot += parseInt(c,10);
    	}
    
    	ff.TotaleMoltSostanza.value = (ff.SostImm.value * prop1) 
    		+ (ff.AltraSostImm.value * prop2) 
    		+ (ff.QuotePart.value * prop3) 
    		+ (ff.SostAziendale.value * prop4);
    	somma(ff);
    
    }
    
    var campi = new Array("TitCollCapAltriCred", "AssVitaRendVital", "AltraSost", "VeicMot", "TotaleMoltSostanza"); 
    
    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;
    		tot += parseInt(c,10);
    	}
      	ff.TotaleSostanza.value = tot;
    }
    
    </script>
    	</head>
    
    		<body onLoad="document.inviadati_Sostanza_rette_NT_user.SostImm.focus();">
    		
    
    				<form name="inviadati_Sostanza_rette_NT_user"  method="post" action = "Donazioni_rette_NT_user.asp">
    					 
    					
     
    
    
    
    					<table align ="center">
    
    						<tr>
    							<td></td>
    							<td></td>
    							<td></td>
    							<td>Sostanza di proprietà</td>		
    							<td align="center">Nome e cognome</td>
    						</tr> 
    
    						<tr>
    							<td>1) Sostanza immobiliare</td>
    							<td><input name="SostImm" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" />  </td>
    							<td><input name="Commento 1)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropSostImmLT" size="1" onchange="molt_sost(this.form)">
               		    	    			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		            			    <option value="Altre_persone">Altre persone</option>
    			    	    			    </select>
    							</td>
    							<td><input name="SostPropSostImm" type="text" maxLength="40"  size="35">  </td>
    						</tr>
    
    						<tr>
    							<td>2) Titoli e collocamento capitali/ogni altro credito</td>
    							<td><input name="TitCollCapAltriCred" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />  </td>
    							<td><input name="Commento 2)" type="button" value="*" onClick="show_hide(this);"></td>
    						</tr>
    		
    						<tr>
    							<td>3) Assicurazione vita/rendita vitalizi</td>
    							<td><input name="AssVitaRendVital" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" /> </td>
    							<td><input name="Commento 3)" type="button" value="*" onClick="show_hide(this);"></td>
    						</tr>
    
    						<tr>
    							<td>4) Altra sostanza immobiliare</td>
    							<td><input name="AltraSostImm" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" />  </td>
    							<td><input name="Commento 4)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropAltraSostImmLT" size="1" onchange="molt_sost(this.form)">
               	     	    	    			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		    	   			    <option value="Altre_persone">Altre persone</option>
    			    	    			    </select>
    							</td>
    							<td><input name="SostPropAltraSostImm" type="text" maxLength="40"  size="35">  </td>
    						</tr>			
    
    						<tr>
    							<td>5) Quote partecipazione</td>
    							<td><input name="QuotePart" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" /> </td>
    							<td><input name="Commento 5)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropQuotePartLT" size="1" onchange="molt_sost(this.form)">
               		    	   			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		    	    			    <option value="Altre_persone">Altre persone</option>
    			    	    			    </select>
    							</td>
    							<td><input name="SostPropQuotePart" type="text" maxLength="40" size="35">  </td>
    						</tr>
    
    						<tr>
    							<td>6) Altra sostanza</td>
    							<td><input name="AltraSost" type="text" maxLength="10" size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" /> </td>
    							<td><input name="Commento 6)"  type="button" value="*" onClick="show_hide(this);"> </td>
    						</tr>
    
    						<tr>
    							<td>7) Veicoli a motore</td>
    							<td><input name="VeicMot" type="text" maxLength="10" size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" /> </td>
    							<td><input name="Commento 7)" type="button" value="*" onClick="show_hide(this);"> </td>
    						</tr>	
    	
    						<tr>
    							<td>8) Sostanza aziendale</td>
    							<td><input name="SostAziendale" type="text" maxLength="10"  size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" /> </td>
    							<td><input name="Commento 8)" type="button" value="*" onClick="show_hide(this);"> </td>
    							<td><select name="SostPropSostAziendaleLT" size="1" onchange="molt_sost(this.form)">
               		    	    			    <option value="Ospite" selected="selected">Ospite</option>
               		    	    			    <option value="Figli">Figli</option>
               		    	   			    <option value="Altre_persone">Altre persone</option>
    			    	   			    </select>
    							</td>
    							<td><input name="SostPropSostAziendale" type="text" maxLength="40" size="35">  </td>
    						</tr>
    
    						<tr>
    							<td>TOTALE</td>
    							<td><input name="TotaleSostanza" type="text" maxLength="12" size="10" class="importo" style="background:#FFFF00 ;" readonly></td>
    						</tr>
    
    
    					</table>
    	
    					<table>
    
    						<tr></tr>
    						<tr></tr>
    						<tr>
    
    						</tr>
    						<tr>	
    							<td>					
    																
    								<input name="TotaleMoltSostanza" type="hidden" size="10"/>
    
                                </form> 
    
    </BODY>
    </HTML>
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    GRANDISSIMO

    Grazieeeeee br1
    You see beauty I see pain, You see sky and I see acid rain

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.