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

    jquery e calcoli al volo


    Ho una tabella di questo tipo
    codice:
    <tr>
    <td><input name="Quantita" value="1" class="minifield" type="text"></td>
    <td><input name="Prezzo" value="45.00" class="minifield" type="text"></td>
    <td><input name="Sconto1" value="0" class="minifield" type="text"></td>
    <td><input name="TotRiga" value="45.00" class="minifield" type="text"></td>
    </tr>
    
    <tr>
    <td><input name="Quantita" value="1" class="minifield" type="text"></td>
    <td><input name="Prezzo" value="45.00" class="minifield" type="text"></td>
    <td><input name="Sconto1" value="0" class="minifield" type="text"></td>
    <td><input name="TotRiga" value="45.00" class="minifield" type="text"></td>
    </tr>
    ------------------------------------------------------------
    per cui ogni riga è composta da
    - Quantita
    - Prezzo
    - Sconto (sulla riga)
    - TotRiga (totale della singola riga)
    ------------------------------------------------------------

    Io vorrei fare 2 cose sfruttando JQuery

    La prima è di avere un TotaleRiga che tenga presente delle quantità, il prezzo e lo sconto, ovvero:
    ------------------------------------------------------------
    TotRiga = calcolo del totale per singola Riga tenendo presente di un possibile sconto
    codice:
          sconto = ((PrezzoRiga*QTAriga)*ScontoRiga)\100
          TotRiga diventa [PrezzoRiga-sconto]
    Questo va stampato ad ogni singola riga
    ------------------------------------------------------------


    La seconda è avere un report Finale di:

    ------------------------------------------------------------
    Quantita = Tutte le quantita sommate presenti
    ------------------------------------------------------------
    Prezzo = Totale dei prezzi*quantità di ogni riga non scontati
    ------------------------------------------------------------
    "Totalone" = Totale dei prezzi*quantita di ogni riga però quelli scontati
    ------------------------------------------------------------

    La cosa la potrei fare lato server, a me però serve JQuery perchè
    se i valori vengono cambiati mi serve mostrare subito il "RICALCOLO"
    ------------------------------------------------------------

    Avete qualche Link d'esempio da cui "trarre" ispirazione?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Esempio completo con il quale puoi giocare.

    Per quanto riguarda l'html disabilita i campi relativi al totale della riga (aggiungendo disabled='disabled'), e cerca di dare un id o una class alla tabella fatto questo l'html per come l'hai postato va bene.

    Per quanto riguarda jquery

    codice:
    $(function(){
      //calcolo quando carico la tabella
      calcolatotali();
      //ricalcolo ogni volta che interagisco con i campi di testo
      $(".minifield").keyup(function(){calcolatotali();});
    });
      
    function calcolatotali()
    {
      //oggetto che salva i totali
      report = {totale:0, qta:0, prezzo:0};
      //scorro le righe della tabella
      $.each($("#mytable tr"), function(){   
        //prendo per ogni riga i valori che servono a calcolare il totale
        var sconto=parseFloat($(this).find(".minifield[name='Sconto1']").val());
        var qta=parseFloat( $(this).find(".minifield[name='Quantita']").val());
        var prezzo=parseFloat( $(this).find(".minifield[name='Prezzo']").val());
        //calcolo il totale della riga
        var totriga = prezzo*qta - (prezzo*qta)*(sconto/100);
        //lo scrivo nell'apposito campo
        $(this).find(".minifield[name='TotRiga']").val(totriga);
        //aggiorno le property dell'oggetto report
        report.qta += qta;
        report.prezzo += (prezzo*qta);
        report.totale += totriga;  
      });
      //dump dell'oggetto report
      console.log(report) ;
    }
    Al link iniziale troverai il codice scritto sicuramente in maniera più pulita.

    Fai attenzione però che dovresti aggiungere la validazione dei campi (l'utente potrebbe inserire lettere e altri simboli) e inoltre keyup potrebbe non funzionare su tutti i browser.

  3. #3
    Ciao longilineo

    Intanto..... ..... sei un grande!
    Ho visto il tutto già ieri, questa mattina ci lavoro sopra era comunque proprio quel che mi serviva come esempio!!!

    Grazie davvero!
    Tanto...lo fanno tutti... posso farlo anche io vero?

  4. #4
    CIAO longilineo

    Va tutto bene, fino a che mi sono trovato le cose scritte
    ora che voglio aggiungerci il totale dei totali non mi viene

    codice:
    $(function(){
      //calcolo quando carico la tabella
      calcolatotali();
      //ricalcolo ogni volta che interagisco con i campi di testo
      $(".minifield").keyup(function(){calcolatotali();});
    });
      
    function calcolatotali()
    {
      //oggetto che salva i totali
      report = {totale:0, qta:0, prezzo:0};
      //scorro le righe della tabella
      $.each($("#mytable tr"), function(){   
        //prendo per ogni riga i valori che servono a calcolare il totale
        var sconto=parseFloat($(this).find(".minifield[name='Sconto1']").val());
        var qta=parseFloat( $(this).find(".minifield[name='Quantita']").val());
        var prezzo=parseFloat( $(this).find(".minifield[name='Prezzo']").val());
        //calcolo il totale della riga
        var totriga = prezzo*qta - (prezzo*qta)*(sconto/100);
        //lo scrivo nell'apposito campo
        $(this).find(".minifield[name='TotRiga']").val(totriga);
        //aggiorno le property dell'oggetto report
        report.qta += qta;
        report.prezzo += (prezzo*qta);
        report.totale += totriga;
    $(this).find(".minifield[name='totalone']").val('che ci metto in questo punto?');
      });
    
     
    }
    Tanto...lo fanno tutti... posso farlo anche io vero?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    fuori dall'each l'oggetto report conterrà tutto quello che cerchi (quantità totale, prezzo totale, totalone), quindi fuori dall'each farai $(selettore_per_qta_totali).val(report.qta), lo stesso per gli altri valori, farlo dentro l'each non ha molto senso.

    Inoltre totalone penso sia un solo campo quindi non ti serve cercarlo a partire da un nodo padre, cioè fuori dall'each puoi fare

    $(".minifield[name='totalone']").val(report.totale);

  6. #6
    yes Pardon

    mi stampa NaN
    Tanto...lo fanno tutti... posso farlo anche io vero?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    //dump dell'oggetto report
    console.log(report) ;

    la console da l'output correttamente quindi non dovrebbe darti NaN, il codice per settare il 'totalone' va nella stessa parte di codice.

  8. #8
    codice:
    $(function(){
      //calcolo quando carico la tabella
      calcolatotali();
      //ricalcolo ogni volta che interagisco con i campi di testo
      $(".minifield").keyup(function(){calcolatotali();});
    });
      
    function calcolatotali()
    {
      //oggetto che salva i totali
      report = {totale:0, qta:0, prezzo:0};
      //scorro le righe della tabella
      $.each($("#mytable tr"), function(){   
        //prendo per ogni riga i valori che servono a calcolare il totale
        var sconto=parseFloat($(this).find(".minifield[name='Sconto1']").val());
        var qta=parseFloat( $(this).find(".minifield[name='Quantita']").val());
        var prezzo=parseFloat( $(this).find(".minifield[name='Prezzo']").val());
        //calcolo il totale della riga
        var totriga = prezzo*qta - (prezzo*qta)*(sconto/100);
        //lo scrivo nell'apposito campo
        $(this).find(".minifield[name='TotRiga']").val(totriga);
        //aggiorno le property dell'oggetto report
        report.qta += qta;
        report.prezzo += (prezzo*qta);
        report.totale += totriga;  
      });
      $(".minifield[name='qtaone']").val(report.qta);
      $(".minifield[name='prezzoone']").val(report.prezzo);
      $(".minifield[name='totalone']").val(report.totale);
    
      //dump dell'oggetto report
      console.log(report) ;
    }
    così facendo mi da NaN
    cosa sbaglio?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    prova questo

    Funziona su chrome safari e firefox, ma su internet explorer come avevo previsto non va keyup, ma NaN spunta solo se lasci qualche campo vuoto o inserirsci valori strani, ma ti avevo avvisato anche su questo.

  10. #10
    si i controlli li devo mettere
    io uso prevalentemente firefox
    può essere che la riga dei totali la includo dentro la tabella che ha anche le righe da calcolarE?
    Tanto...lo fanno tutti... posso farlo anche io vero?

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.