Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 39
  1. #1

    Somma importi -> Totale dinamico

    Ciao a tutti,

    ho una serie di campi in cui inserisco degli importi (valori int), poi alla fine ho un campo in cui vorrei far vedere il Totale (la somma di questi).

    Vorrei sapere se fosse possibile far sì che il campo Totale venga aggiornato all'inserimento di ogni singolo importo.

    Ad esempio io metto un importo nel campo1, metto un secondo importo nel campo2 e quando tolgo il cursore dal campo2 mi mostra in automatico il totale di campo1 e campo2.

    E così via per il campo3, campo4, ecc...

    Suggerimenti?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Devi chiamare la funzione all'evento onblur di tutti i campi.

    Esempio:
    <input ... onblur="calcolasomma();">
    <input ... onblur="calcolasomma();">
    <input ... onblur="calcolasomma();">

    <input name="totale" ...>
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Ecco grazie...

    un consiglio ulteriore pf perché non sono per niente pratico e incappo sempre in qualche errore...

    ho questo codice

    codice:
    function somma() {
     
      var A = parseInt(document.modulo.campo1.value);
      var B = parseInt(document.modulo.campo2.value);
      document.modulo.Totale.value = A+B;
    
    	
    }
    
    ...
    
    <form name="modulo">
    
    <input name="campo1" type="text" size=10 onblur="somma()">
    <input name="campo2" type="text" size=10 onblur="somma()">
    
    ...
    
    <input name="Totale" type="text" size=10>
    
    </form>

    dove sbaglio?

  4. #4
    Come non detto funziona...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non vedo errori gravi, ma piccole cose che pero` non dovrebbero impedire di vedere il risultato valido (ma che conviene correggere per non trovarsi sorprese domani).

    Non dici pero` qual e` il problema:
    - il conto e` sbagliato?
    - non vedi il risultato?
    codice:
    function somma(ff) {
      var a = parseInt(ff.campo1.value,10);
      var b = parseInt(ff.campo2.value,10);
      ff.Totale.value = a + b;
    }
    
    ...
    
    <form name="modulo">
    <input name="campo1" type="text" size="10" onblur="somma(this.form)" />
    <input name="campo2" type="text" size="10" onblur="somma(this.form)" />
    ...
    <input name="Totale" type="text" size="10" readonly="readonly" />
    
    </form>
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Sono ancora io... ecco i problemi di "domani" sono sorti subito :master:

    allora riepilogando. Questo è il codice che ho ora

    codice:
    function somma(ff) {
     
      var A = parseInt(ff.CAMPO1.value,10);
      var B = parseInt(ff.CAMPO2.value,10);
      var C = parseInt(ff.CAMPO3.value,10);
    
      ff.Totale.value = A + B + C;
    
    	
    }
    
    
    <form name="modulo">
    ...
    
    <input name="CAMPO1" type="text" size=10 onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />
    
    <input name="CAMPO2" type="text" size=10 onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />
    
    <input name="CAMPO3" type="text" size=10 onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />
    
    
    <input name="Totale" type="text" size=10 readonly="readonly" />
    
    </form>
    Il problema è che ora non mi somma niente... e nel campo totale mi mostra 'NaN'

    grazie x la pazienza

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non capisco l'uso che fai delle maiuscole: e` contrario alle consuetudini dei programmatori.
    E non capisco perche` non usi le virgolette correttamente:
    size="10"

    Per capire gli errori occorre anche conoscere cosa fa il programma controllaNumeri(), che potrebbe abilitare o meno la scrittura dei numeri stessi nel campo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Allora...

    per quanto riguarda le maiuscole niente... era solo per mettere in evidenza i campi.

    Per il size="10" ok grazie, pensavo che per i numeri fosse indifferente mettere o non mettere le virgolette.

    Ecco il codice completo di funzione controllaNumeri() che serve nel caso in cui l'utente scrive una stringa di testo e viene avvisato che non può in quanto deve scrivere un numero...

    codice:
    function somma(ff) {
     
      var A = parseInt(ff.campo1.value,10);
      var B = parseInt(ff.campo2.value,10);
      var C = parseInt(ff.campo3.value,10);
    
      ff.totale.value = A + B + C;
    
    	
    }
    
    function controllaNumeri() {
    
    var n=new Number(document.modulo.campo1.value);
    
    if(new String(n)=="NaN") {
              alert("Il campo 1) deve contenere solo numeri");
              document.modulo.campo1.value="";
              document.modulo.campo1.focus(); 
              return false;
            }
    
    var n=new Number(document.modulo.campo2.value);
    
    if(new String(n)=="NaN") {
              alert("Il campo 2) deve contenere solo numeri");
              document.modulo.campo2.value="";
              document.modulo.campo2.focus(); 
              return false;
            }
    
    
    var n=new Number(document.modulo.campo3.value);
    
    if(new String(n)=="NaN") {
              alert("Il campo 3) deve contenere solo numeri");
              document.modulo.campo3.value="";
              document.modulo.campo3.focus(); 
              return false;
            }
    }
    
    ...
    
    <form name="modulo">
    ...
    
    <input name="campo1" type="text" size="10" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />
    
    <input name="campo2" type="text" size="10" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />
    
    <input name="campo3" type="text" size="10" onKeyUp="return controllaNumeri();" onblur="somma(this.form)" />
    
    
    <input name="totale" type="text" size="10" readonly="readonly" />
    
    </form>

    Grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La funzione controllaNumeri si puo` anchre fare corretta e molto piu` semplice.

    Prova con la tua a scrivere "12e5": dovrebbe accettarlo.

    Vedi invece questa:
    codice:
    function controllaNumeri(cc) {
      var vv = cc.value;
      if(!vv.match(/^[\d\.]*$/) {
        alert("Il campo "+cc.name+" deve contenere solo numeri");
        cc.value = vv.substr(0,vv.length-2);
        cc.focus(); 
        return false;
      }
      return true;
    }
    Da chiamare con:
    onkeyup="controllaNumeri(this);"

    La funzione permette solo numeri e il punto, ma si puo` modificare. Purtroppo permette anche piu` di un punto, ma farla che permetta un solo punto diventa molto piu` complessa.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Scrivendo "12e5" non me lo accetta e mi ritorna l'alert.

    Comunque ora provo a sostituire la funzione controllaNumeri() mia con quella che mi hai dato tu, dici che è per questo che non mi va l'altra funzione della somma?

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.