Realizzare tabella che aggiorna i prezzi in base alle quantità

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
Buongiorno a tutti...

Mi aiutate a realizzare il meccanismo per far si che aggiorni il prezzo nel subtotale se si aggiorna la quantità e allo stesso tempo mi calcola l'iva in base al subtotale?
io sto provando con questo jquery:

Codice:
<script type="text/javascript">
	$(document).ready(function()
	{
		$('#prodotticarrello tr').each(function() {
			var Id = $(this).find(".val").html();    
		});
	});
	</script>
ma non funziona.
Questa è la struttura della tabella:

Codice:
<table class='bordo'  id='prodotticarrello' border='0'>
<tr>
<th style='width:450px'>Descrizione</th><th style='width:111px;border-left:1px solid #F0F0F0;border-right:1px solid #F0F0F0;'>Prezzo</th><th style='border-right:1px solid #F0F0F0;width:70px;text-align:center;'>Quantità</th><th style='border-right:1px solid #F0F0F0;width:120px;'>IVA</th><th style='width:80px;'>Subtotale</th><th style='border-left:1px solid #F0F0F0;'>&nbsp;</th></tr>

<tr><td >Prodotto 1</td><td class='val'>60.74</td><td><input size='1' name='qta' type='text' value='1'></td><td>13.36 € (22.00%)</td><td>60.24</td><td><a href='carrello.php?action=cancella&id=3'>rimuovi</a></td></tr>
<tr ><td>Prodotto 2</td><td class='val' >15.10</td><td><input size='1' type='text' name='qta' value='1'></td><td>3.32 € (22.00%)</td><td class='val'>15.10 €</td><td><a href='carrello.php?action=cancella&id=12'>rimuovi</a></td></tr>
<tr><td>Prodotto 3</td><td class='val'>125.63</td><td><input size='1' name='qta' type='text' value='1'></td><td>27.63 € (22.00%)</td><td class='val'>125.63 €</td><td><a href='carrello.php?action=cancella&id=12'>rimuovi</a></td></tr>
</table>

Non conosco molto jquery e ho qualche difficoltà.
Grazie mille a tutti quelli che mi aiuteranno
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
CIao, in effetti è molto difficile che una sola riga di codice possa eseguire tutte le operazioni che vuoi far fare :)
potresti provare cosi
HTML:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        var aliquota = 22;
        $(".qta").keyup(function(){
            var qta = $(this).val();
            if(qta > 0) {
                var prezzo = $(this).parent().prev().html();
                var iva = (prezzo * qta) * (aliquota / 100);
                var totale = parseFloat(prezzo * qta) + parseFloat(iva);
                $(this).parent().next().html(Math.round(iva * 100) / 100);
                $(this).parent().next().next().html(Math.round(totale * 100) / 100);                
            }
        });
    });
</script>
<table>
    <tr>
        <td>Prodotto 1</td>
        <td>60.25</td>
        <td><input type="text" size="2" class="qta" name="qta1" value="1"/></td>
        <td>13.26</td>
        <td>73.51</td> 	
    </tr>
</table>
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
grazie mille per la risposta. :D

due domande:

name="qta1" lo genero con un contatore al momento che creo la tabella giusto?

ho modificato lo script per eliminare il conteggio dell'iva nel subtotale...
 
Ultima modifica:

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
Ho modificato il tutto per renderlo come lo volevo e sembra funzionare tutto...

Come faccio a fare il conteggio totale di tutta la colonna subtotale? senza iva?
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
name="qta1" lo genero con un contatore al momento che creo la tabella giusto?
si, ma, è inutile al fine di questo script
Se non vuoi aggiungere l'iva basta evitare l'addizione
Codice:
var totale = parseFloat(prezzo * qta) + parseFloat(iva);
cosi
Codice:
var totale = parseFloat(prezzo * qta);
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
Ecco si mi traeva in inganno il qta1... ma in effetti eliminando il numero funziona lo stesso.

E' difficile recuperare tutti i valori della colonna subtotale e fare la somma?
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
funziona tutto. ho creato una funzione che mi da il totale attaverso il campo subtotale dichiarato come class="subtot". Sembra funziona ma non riesco a farlo aggiornare dopo che aumento la quantità. La funzione è:

Codice:
function aggiornaprezzi() { 

		var somma=0;var totalesub=0;
	
		$(".subtot").each(function(){
			
			var recupero = $(this).text(); 
			var recuperoparse=parseFloat(recupero);
			totalesub += recuperoparse;
			$( "#totalecarrello" ).html(totalesub+" €");
		});

e questo è il codice della funzione che aggiorna la quantità:

Codice:
var aliquota = 22;
        $(".qta").keyup(function(){
            var qta = $(this).val();
            if(qta > 0) {
                var prezzo = $(this).parent().prev().html();
                var iva = (prezzo * qta) * (aliquota / 100);
                var totale = parseFloat(prezzo * qta) ;
                $(this).parent().next().html(Math.round(iva * 100) / 100+" ("+aliquota+" %)");
                $(this).parent().next().next().html(Math.round(totale * 100) / 100+" €"); 
				//$(this).parent().next().html(iva);				
            }
			aggiornaprezzi();
        });

dove sbaglio?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Metti questa riga fuori dal ciclo each
Codice:
$( "#totalecarrello" ).html(totalesub+" €");
dovrebbe funzionare
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
Ciao!!! grazie per le risposte:

ho modificato così:

Codice:
$('#prodotticarrello tr ').each(function() {
			var recupero = $(this).find(".subtot").html();    
			var recuperoparse=parseFloat(recupero);
			totalesub += recuperoparse;
			//$( "#totalecarrello" ).html(totalesub+" €");
		 });
		 $( "#totalecarrello" ).html(totalesub+" €");
	
			
		};

ma nel campo totale viene scritto Nan €
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Quello di prima funzionava
te lo riposto completo
HTML:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        var aliquota = 22;
        $(".qta").keyup(function() {
            var qta = $(this).val();
            if (qta > 0) {
                var prezzo = $(this).parent().prev().html();
                var iva = (prezzo * qta) * (aliquota / 100);
                var totale = parseFloat(prezzo * qta);
                $(this).parent().next().html(Math.round(iva * 100) / 100 + " (" + aliquota + " %)");
                $(this).parent().next().next().html(Math.round(totale * 100) / 100 + " &euro;");
            }
            aggiornaprezzi();
        });

    });
    function aggiornaprezzi() {
        var totalesub = 0;
        $(".subtot").each(function() {
            var recupero = $(this).text();
            var recuperoparse = parseFloat(recupero);
            totalesub += recuperoparse;
        });
        $("#totalecarrello").html(totalesub + " &euro;");
    }
</script>
<table>
    <tr>
        <td>Prodotto 1</td>
        <td>60.25</td>
        <td><input type="text" size="2" class="qta" name="qta1" value="1"/></td>
        <td>13.26 (22 %)</td>
        <td class="subtot">60.25 &euro;</td> 	
    </tr>
     <tr>
        <td>Prodotto 2</td>
        <td>64.05</td>
        <td><input type="text" size="2" class="qta" name="qta2" value="1"/></td>
        <td>14.09 (22 %)</td>
        <td class="subtot">64.05 &euro;</td> 	
    </tr>
</table>
<div>Totale : <span id="totalecarrello"> 124.3 &euro;</span></div>
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
perfetto!!! come faccio però a limitare a due decimali dopo la virgola? non sempre appare ma a volte mi viene tipo: 5740.610000000001 €

e anche al campo iva ho provato ma viene arrotondato per eccesso e io invece voglio che se è : 56.6987 venga 56.69 e non 56.70. è possibile?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
questa istruzione ti arrotonda ai 2 decimali
Codice:
Math.round(iva * 100) / 100
se non l'hai tolta dovrebbe funzionare
per arrotondare in difetto come vuoi tu devi usare floor() al posto di round() guarda qui
ma sicuro che si arrotonda in questo modo l'iva?
prova a fare una ricerca qui dicono il contrario
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
rieccomi... ho scritto:

$("#totalecarrello").html(Math.round(totalesub) + " &euro;");

ma sbaglia le somme... dove sbaglio?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Tua
Codice:
Math.round(totalesub)
Mia
Codice:
Math.round(totalesub * 100) / 100
non noti nessuna differenza?
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
hai ragione scusa. sono fuso.

Purtroppo mi sa che dovrò abbandonare l'idea del jquery per il carrello perchè non conoscendolo bene vado a tentativi e non mi piace. Ad esempio siccome nel mio carrello è possibile che ci siano prodotti con id uguali la cancellazione del singolo prodotto veniva effettuata tramite id del prodotto e quindi mi cancellava tutti i prodotti con quell'id. Allora mi sono inventato un sistema tramite un contatore per agire sull'id della sessione in modo da levare quello e basta e sembra funzionare ma non ne sono sicuro...
 

lorenzo84

Utente Attivo
22 Lug 2012
239
0
16
eccomi di nuovo!!! mi sono incaponito sul carrello gestito con jquery e sembra funzionare tutto al meglio.
Ora devo aggiornare il totale del carrello in base al metodo di spedizione e pagamento.

La selezione del metodo di pagamento e della spedizione avviene tramite radio button:

<tr><td><input type="radio" name="metodo_sped"></td><td>Corriere espresso</td><td>0.30€ (22%)</td><td>10.00 €</td></tr>
<tr><td><input type="radio" name="metodo_sped"></td><td>Spedizione 3-5 giorni</td><td>0.10€ (22%)</td><td>5.00 €</td></tr>

Una volta scelto la modalità e cliccato sul radio button interessato dovrei aggiornare il totale del carrello in questo td:

<span id='totalecarrelloconspedepag'> </span>

mii dai qualche dritta? vorrei provarci da me ma non capisco come recuperare il prezzo relativo al tr associato al radiobutton...
 
Discussioni simili
Autore Titolo Forum Risposte Data
C [Retribuito] cerco programmatore per realizzare forum phpbb su altervista Offerte e Richieste di Lavoro e/o Collaborazione 0
A [Photoshop] come poter realizzare il seguente "effetto" Photoshop 4
I [Photoshop] Come realizzare immagine tonalità di grigio Photoshop 0
C [PHP] Come realizzare un tema wordpress per monetizzarlo?e dove testarlo gratis? PHP 3
F Realizzare video su Mac Mac e Software 0
D [PHP] [RETRIBUITO] cercasi esperto programmatore per realizzare applicazione in html e codice iframe PHP 0
D [RETRIBUITO] cercasi esperto programmatore per realizzare applicazione in html e codice iframe Offerte e Richieste di Lavoro e/o Collaborazione 2
L [ASP.Net] Realizzare modulo contatti PopUp ! ASP.NET 1
N Come realizzare Cookie e Privacy Policy con Iubenda Leggi, Normative e Fisco 5
N Con cosa realizzare un sito web? Webdesign e Grafica 9
elpirata Realizzare video con immagini testo e transizioni Windows e Software 5
L [HTML] Realizzare piantina prenotazione posti HTML e CSS 4
P [PHP] Realizzare un controllo accessi cantiere, problema lettore Qrcode... PHP 0
M [Photoshop] come realizzare un effetto speciale? Photoshop 1
Z È possibile realizzare DEM con Adobe Muse? Webdesign e Grafica 0
asevenx Realizzare modulo per selezionare elementi da una lista PHP 1
Silvio Losi Come realizzare una piattaforma "ad-hoc" (No CMS) E-Commerce 8
E realizzare una mappa personale e responsive HTML e CSS 6
E Realizzare una finestra overlay con caricamento pagina html HTML e CSS 3
Gabriele Visioli Realizzare e Vendere siti web senza aprire una Partita IVA... Come? Leggi, Normative e Fisco 4
B realizzare una introduzione per un sito web Javascript 4
S Come realizzare una didascalia a comparsa su un'immagine? HTML e CSS 1
L Realizzare script con grafico e tabelle che si aggiornano automaticamente jQuery 1
T Come potrei realizzare un piccolo forum di discussione su un sito web...? phpBB 2
C cerco un web master per realizzare sito professionale Offerte e Richieste di Lavoro e/o Collaborazione 6
S realizzare un' area di login completa costo... Offerte e Richieste di Lavoro e/o Collaborazione 2
L Realizzare applicazione per hotel con camere disponibili PHP 2
G [GRATUITO]Cercasi webdesigner (per realizzare template) Offerte e Richieste di Lavoro e/o Collaborazione 7
Carlito's Come realizzare uno script Javascript 2
M [Cerco Collaborazione] un bravo esperto per realizzare insieme un sito web? Offerte e Richieste di Lavoro e/o Collaborazione 8
T [risolto] Realizzare un form email con multi scelta Sviluppo app per Android 2
G C++ realizzare apps per iOS C/C++ 1
A Realizzare un mega menu con css HTML e CSS 2
L realizzare login numerico PHP 8
G Realizzare apps per iOS meno recenti Sviluppo app per iOS 1
L realizzare apertura e chiusura div dinamico jQuery 3
mircop Realizzare storico consumi PHP 4
P è meglio un framework o realizzare da solo un sito? HTML e CSS 4
M devo realizzare un sito ma... Offerte e Richieste di Lavoro e/o Collaborazione 4
M per realizzare il sito passare da aruba a serve dell agenzia?? Hosting 0
D Una query complicata da realizzare PHP 33
M Consigli per sito da realizzare Joomla 0
A realizzare un catalogo in un sito web Webdesign e Grafica 3
A Realizzare il gioco del tris usando javascript, il dom e l'oggetto event-. Javascript 4
G Realizzare un'immagine con sfondo trasparente con Photoshop Photoshop 3
P realizzare presentazione multimediale x pubblicità Programmazione 0
H Qualcuno mi può indicare programmi facili per realizzare siti web facilmente HTML e CSS 14
B realizzare una buona rete lan.... Reti LAN e Wireless 1
neo996sps [codeingniter]: realizzare un semplice menu PHP 1
C consigli su come realizzare un blog avendo già un host HTML e CSS 6

Discussioni simili