Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125

    Scrivere in un DIV in base alle scelte fatte in due select

    Ciao a tutti,

    ho un form con due select. In base alle scelte che l'utente effettua su queste due select, si determina un prezzo, che vorrei venisse scritto all'istante in un DIV, senza dunque dover ricaricare la pagina.

    Le due select sono:

    codice:
    <select name="quantita" id="quantita">             
    <option value="seleziona">Quantità</option>             
    <option value="100">100</option>            
    <option value="200">200</option>             
    <option value="300">300</option>             
    <option value="500">500</option>             
    <option value="1000">1.000</option>           
    </select>
    codice:
    <select name="modello" id="modello">             
    <option value="seleziona">Modello</option>             
    <option value="Senza lembi">Senza lembi</option>             
    <option value="Un lembo">Un Lembo</option>             
    <option value="Due lembi incollati">Due lembi incollati</option>           
    </select>
    Aiuto please

  2. #2
    Utente di HTML.it L'avatar di zamer
    Registrato dal
    Mar 2009
    Messaggi
    14
    spiegati meglio... se vuoi semplicemente scrivere il contenuto di un option in un div basta iniettare nel div tramite un onclick all'option il valore selezionato ad es:

    codice:
    <select name="quantita" id="quantita">             
    <option value="seleziona">Quantità</option>             
    <option value="100"  onclick="document.getElementById('visualizzatore').innerHTML='100'">100</option>            
    <option value="200"  onclick="document.getElementById('visualizzatore').innerHTML='200'">200</option>             
    
    ...e così via...
            
    </select>
    
    
    <div id="visualizzatore">
    
    </div>

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Hai ragione, mi sono spiegato male; faccio un esempio concreto.
    Stiamo parlando di cartellino. Diciamo che l'utente sceglie 100 pezzi e come modello "senza lembi".
    Questa scelta ha un costo di € 100.
    Io vorrei che questo prezzo finisse immediatamente in un DIV, senza che il browser ricaricasse la pagina.
    Se poi la stessa persona scegliesse ad esempio 200 pezzi con "1 lembo", il prezzo nel DIV dovrebbe cambiare.
    Spero di essermi spiegao meglio.

    Mille grazie.

  4. #4
    piu' o meno...

    crea una funzione calcola(a,b)...
    var totale = a*b;
    document.getElementById('id_div').innerHTML = (totale);
    ...

    richiama la funzione dove/quando ti serve

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Ho provato, ma non capisco quello che intendi.
    Potete aiutarmi per favore?
    Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Help please

  7. #7
    ti dico subito che non sono un grande esperto di javascript...e che sono interessato anch'io a trovare una soluzione a questo problema più "pulita" di quella che ho usato io.

    quindi, visto che il totale dipende da entrambe le select, dovresti memorizzarti il valore delle option scelte.

    ad esempio:
    in ogni option della prima select, richiami una funzione "mem_qnt(a)", che memorizza il valore scelto nella prima select.
    in ogni option della seconda select richiami una funzione "mem_mod(b)", che memorizza il valore scelto nella seconda select.

    poi metti un pulsante che richiama la funzione "calcola()" che va a calcolare il totale delle due select.

    ti faccio un esempio col codice:
    codice:
    <select name="quantita" id="quantita">             
    <option value="seleziona">Quantità</option>             
    <option value="100" onclick="mem_qnt(100)">100</option>            
    <option value="200" onclick="mem_qnt(200)">200</option>
    codice:
    <select name="modello" id="modello">             
    <option value="seleziona"">Modello</option>             
    <option value="Senza lembi" onclick="mem_mod(qui passi il valore che deve assumere se è senza lembi, chessò tipo 50)>Senza lembi</option>
    queste due funzioni non faranno altro che memorizzare il valore assunto da ogni select

    codice:
    function mem_qnt(a)
    var quantita = a;
    
    function mem_mod(b)
    var mod = b;
    e infine la funzione che calcola è simile a quella che ti hanno già postato


    codice:
    function calcola(){
    var totale = quantita*mod;
    document.getElementById("div_totale").innerHTML = totale;
    ovviamente questo è solo codice di esempio, che magari ti funziona o magari devi dargli una sistemata (tipo inizializzare le variabili all'esterno delle funzioni, o fare un controllo prima di calcolarle...), e implica l'uso di un bottone "calcola" che ti va a richiamare la funzione calcola().

    spero di esserti stato d'aiuto

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Me la devo studiare quando ho un attimo di tempo (domani mattina ormai).
    Ti faccio sapere.
    Per il momento grazie di aver contribuito alla discussione.

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Untitled Document</title>
    <script type="text/javascript">
    function calcola(mod,qt){
    	var m = parseInt(mod.options[mod.selectedIndex].value.split("|")[1])
    	var q = parseInt(qt.options[qt.selectedIndex].value)
    	var somma = (m*q)
    	document.getElementById('prezzo').innerHTML=somma;
    	}
    </script>
    
    </head>
    
    <body>
    <form action="" method="get" name="modulo">
    <select name="modello" id="modello" onchange="if(this.options.selectedIndex!=0 && document.getElementById('quantita').options.selectedIndex!=0){calcola(this, document.getElementById('quantita'))}">             
    <option value="seleziona">Modello</option>             
    <option value="Senza lembi|50">Senza lembi</option>             
    <option value="Un lembo|100">Un Lembo</option>             
    <option value="Due lembi incollati|200">Due lembi incollati</option>           
    </select>
    <select name="quantita" id="quantita" onchange="if(this.options.selectedIndex!=0){calcola(document.getElementById('modello'), this)}else{alert('seleziona una quantita')}">             
    <option value="seleziona">Quantità</option>             
    <option value="100">100</option>            
    <option value="200">200</option>             
    <option value="300">300</option>             
    <option value="500">500</option>             
    <option value="1000">1.000</option>           
    </select>
    
    prezzo <div id="prezzo">0</div>
    </form>
    </body>
    </html>
    se nome modello non ti serve togli la barra (|) ed elimini .split("|")[1] nella funzione
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Grazie tante a tutti per l'aiuto.

    La soluzione proposta da cavicchiandrea, l'ultima per capirci, funziona egregiamente ed è ciò che stavo cercando.
    L'unica cosa è che se metto il prezzo della cartellina nel value del modello, dopo il pipe (|), non mi restituisce nel DIV ciò che mi occorre.
    Per esempio 100 pezzi della senza lembi costano 120 euro. Se effettuo questa selezione, mi calcola 12000 euro.
    Ho provato allora a mettere nel value del senza lembi |1,20 o 1.20, ma moltiplica sempre per 1.

    Aiutatemi per favore.

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.