Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    24

    Aiuto con funzione javascript

    Ciao volevo un aiuto.
    Dato un semplice form con degli ingredienti e i relativi prezzi,vorrei che selezionando la checkbox e quindi scegliendo un determinato ingrediente,si calcolasse il costo Totale della spesa,quindi se seleziono più check il totale è dato dalla somma dei costi degli ingredienti scelti,e quando lo deseleziono il totale viene decrementato.Ma come faccio a farlo??
    Mi sono bloccato qui.

    codice:
    <html>
     <head>
     <script type="text/javascript"> 
     function getTot(pz){ 
     document.getElementById("tot").innerHTML=pz; }
    </script>
    </head>
    
    <body>
    <form id="ordine">
    <table>
    <tr>
    <td><input type="checkbox" name="menu" value="2.50" onClick="getTot(this.value)">Mozzarella</td>
    <td>2.50</td></tr>
    <tr>
    <td><input type="checkbox" name="menu" value="1.50" onClick="getTot(this.value)">Pomodoro</td>
    <td>1.50</td>
    </tr>
    <tr>
    <td><input type="checkbox" name="menu" value="2.50" onClick="getTot(this.value)">Melanzane</td>
    <td>2.50</td>
    </tr>
    <tr>
    <td>TOTALE</td>
    <td><span id="tot"> 0.00 </span></td></tr>
    </table>
    <input type="submit" value="ordina">
    </body>
    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    24
    ho risolto cosi...però vorrei sapere se ci sono altre soluzioni...forse migliori della mia.

    codice:
    <html> 
    <head> 
    <script type="text/javascript"> 
    function getTot(){ 
    var tot=0; 
    var n=ordine.menu.length; 
    for(var i=0;i<n;i++){ 
    if(ordine.menu[i].checked==true){ 
    tot=tot+parseFloat(ordine.menu[i].value); 
    document.getElementById("tot").innerHTML=tot;}
    else{ 
    document.getElementById("tot").innerHTML=tot; 
    } } } 
    </script> 
    </head> 
    <body> 
    <form id="ordine"> 
    <table> 
    <tr><td><input type="checkbox" name="menu" value="2.5" onClick="getTot()">Mozzarella</td> 
    <td>2.50</td></tr> 
    <tr> <td><input type="checkbox" name="menu" value="1.5" onClick="getTot()">Pomodoro</td> 
    <td>1.50</td> </tr> 
    <tr> <td><input type="checkbox" name="menu" value="2.5" onClick="getTot()">Melanzane</td> <td>2.50</td> </tr> 
    <tr><td> TOTALE</td> <td><span id="tot"> 0 </span></td></tr> 
    </table> 
    <input type="submit" value="ordina"> 
    </body> 
    </html>

  3. #3
    Direi che hai trovato la strada giusta.
    Non puoi basarti dinamicamente sulle modifiche che l'utente fa al form per aumentare o diminuire l'iporto totale.
    Devi necessariamente ricalcolare l'importo ripartendo da zero ad ogni modifica che l'utente inserisce.
    Non è detto che lo script che hai prodotto sia il migliore, ma la strada è quella giusta.

    Per scrupolo e compatibilità forse userei document.ordine.menu anzichè solo ordine.menu

    E magari non userei la variabile tot, uguale al nome del div in cui vuoi stamparla, ma la chiamerei altrimenti.

    Invece di onclick userei degli onchanged.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    24
    ah ok ti ringrazio allora per i consigli Grazie!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    24
    scusatemi,ma se volessi, dopo aver selezionato gli ingredienti,fare un riepilogo richiamando riepilogo.php,riportando tutti gli ingredienti selezionati,come devo fare???
    Perchè alla fine potendo fare più scelte,non posso solo fare $menu=$_POST['menu'],mi prenderebbe solamente l'ultimo selezionato,e invece $menu deve essere un array!

  6. #6
    Hai ragione.

    In questo caso non è necessario cha tutti i checkbox abbiano lo stesso nome, anzi è sbagliato.

    Puoi attribuire ai checkbox dei nomi differenziati , ad esempio menu0, menu1, ..., menuN.
    Ciò lo puoi fare staticamente nell'html oppure dinamicamente in un loop con javascript.

    Dopo di che la applicazione che deve processare il form può accedere ai singoli valori, eventualmente tramite un loop che ricostruisce i nomi menu0, menu1 etc.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    24
    non c'è un modo diverso?
    Perchè considera che io gli ingredienti li prendo da database,quindi potrebbero essere anche tanti,non solo 3 come in questo caso...poi quanti menu0,menu1,ecc devo creare...?
    Io ho capito la tua idea,solo che non riesco a metterla in pratica...

  8. #8
    Ci sono senz'altro molti modi per fare quanto ti serve.
    Ma non conoscendo come hai impostato tabelle del db, come le recuperi, come ripeschi nomi e prezzi dei vari item nella pagina che processa il form, non posso avere idee precise.

    Posso suggerirti, eventualmente:

    - passare il numero di totale di item in un campo "hidden" del form
    - usare le sessioni di php
    - invece di checkbox usare campi numerici (quanti pezzi invece di si/no)

    Se i dati (items, prezzo) vengono letti da db, li avrai disponibili in una risorsa mysql: è quindi ragionevole usare un array sia per creare dinamicamente il form che poi per leggerlo nella pagina che deve processarlo.

    Se i dati vengono inseriti staticamente nel codice html, allora anche riepilogo.php dovrà contenere tali dati "hardcoded".

    Questa seconda strada non è percorribile se gli item da vendere sono parecchi o se andranno aggiornati frequentemente.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

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 © 2026 vBulletin Solutions, Inc. All rights reserved.