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:
che è associato a questa lista a tendina:codice:<input name="SostImm" type="text" maxLength="10" size="10" class="importo" onKeyUp="return controllaNumeri();" onblur="molt_sost(this.form)" />
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.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>
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![]()