Piccolo form

  • Creatore Discussione Creatore Discussione idkfa46
  • Data di inizio Data di inizio

idkfa46

Utente Attivo
17 Ott 2010
40
0
0
Ciao a tutti,
ancora una volta sto litigando con il mio piccolo form e vengo a chiedervi aiuto.

Ecco qui la porzione di codice in questione:
PHP:
   Costo Licenze: <input type="text" id="licenze" size=15><br>
   Iva:   	  <input type="text" id="iva" size=15><br>
   Totale: 	  <input type="text" id="costototale" size=15><br>

----------------------------------------------------------<br>
   <form>

	Nazionalità: 
   <select id="sss" size="1" name="nazione" onChange="...">
  	<option selected value=0>seleziona</option>
	   <option value=1,Italia>Italia</option>
   	   <option value=0,Estero>Estero</option>
   <select> <br />

	N° Licenze:  
   <select id="sss" size="1" name="licenze" onChange="CalcolaLicenze(this.options[this.selectedIndex].value)">
   	<option selected value=1>1</option>
	   <option value=2> 2</option>
	   <option value=3> 3</option>
	   <option value=4> 4</option>
	   <option value=5> 5</option>
	   <option value=6> 6</option>
	   <option value=7> 7</option>
	   <option value=8> 8</option>
	   <option value=9> 9</option>
	   <option value=10> 10</option>
   <select> <br />

e lo script:

PHP:
prezzo1=350;	//prezzo pieno
prezzo2=250;	//prezzo scontato

function CalcolaLicenze(qt){
var pz = (qt < 5) ? prezzo1 : prezzo2;
document.getElementById('licenze').value=(qt*pz);
}

Al momento, aggiornando il numero di licenze, viene riportato il il calcolo del prezzo alla voce "Costo licenza". Adesso però dovrei integrare il calcolo del prezzo aggiungendo alcuni passaggi.
In particolare, vorrei riportare alla voce "iva" il valore corrispondente a Costolicenza*0,21 se, alla voce nazionalità è stato selezionato Italia, viceversa, il valore da riportare sarà 0.
Alla voce totale invece dovrei riportare la somma Costolicenza + iva.

Come devo impostare lo script per ottenere ciò?

Grazie, M
 
Quel form è davvero un macello. Ho riscritto tutta la pagina in HTML5 e jQuery:
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Licenze</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />

        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function() {
            pieno    = 350;
            scontato = 250;

            $("#licenze").change(function() {
                var num = parseInt($(this).val());

                if (num > 5) {
                    var costo = scontato * num;
                } else {
                    var costo = pieno * num;
                }

                if ($("#nazione").val() == "italia") {
                    var iva = (costo / 100) * 21;
                } else {
                    var iva = 0;
                }

                var totale = costo + iva;

                $("#costo").val(costo);
                $("#iva").val(iva);
                $("#totale").val(totale);
            });
        });
        </script>
    </head>

    <body>
        <p>
            <label for="nazione">Nazionalità:</label>
            <select id="nazione">
                <option value="italia">Italia</option>
                <option value="estero">Estero</option>
            </select>
        </p>

        <p>
            <label for="licenze">Numero di licenze:</label>
            <input type="text" id="licenze" size="2" value="0" />
        </p>

        <p>
            <label for="costo">Costo licenze: €</label>
            <input type="text" id="costo" size="5" readonly="readonly" value="0" />
        </p>

        <p>
            <label for="iva">IVA: €</label>
            <input type="text" id="iva" size="5" readonly="readonly" value="0" />
        </p>


        <p>
            <label for="totale">Totale: €</label>
            <input type="text" id="totale" size="5" readonly="readonly" value="0" />
        </p>
    </body>
</html>
La prossima volta cerca di usare le stesse tecniche.

P.S. Spero che per calcolare il prezzo non usi solo Javascript... vero?
 
Ultima modifica:
Grazie Alessandro!
lo so che sono un disastro... ho testato il tuo codice e funziona perfettamente!

Ho riscontrato un problemino però... se seleziono prima la nazionalità e poi il numero di licenze funziona tutto correttamente ma, se decidessi di modificare il campo nazionalità in seguito, il calcolo dell'iva e del totale non vengono aggiornati... :evil:

è risolvibile?

ps. per il calcolo del totale lo faccio anche in php... cosa intendi per "P.S. Spero che per calcolare il prezzo non usi solo Javascript... vero? "
 
Sì, sostituisci la parte Javascript con questa:
Codice:
$(document).ready(function() {
    pieno    = 350;
    scontato = 250;

    $("#licenze, #nazione").change(function() {
        var num = parseInt($("#licenze").val());

        if (num > 5) {
            var costo = scontato * num;
        } else {
            var costo = pieno * num;
        }

        if ($("#nazione").val() == "italia") {
            var iva = (costo / 100) * 21;
        } else {
            var iva = 0;
        }

        var totale = costo + iva;

        $("#costo").val(costo.toFixed(2));
        $("#iva").val(iva.toFixed(2));
        $("#totale").val(totale.toFixed(2));
    });
});
Per quanto riguarda il calcolo in PHP, sì, è esattamente quello che intendevo.
 
Ultima modifica:
Fenomenale... GRAZIE Adesso faccio qualche mia piccola modifica sperando di non far saltare in aria niente :hammer:
 
Eccomi ancora qui...
il mio codice sta crescendo e mi sono venuti un paio di dubbi...
1- non visualizzo i caratteri speciali, lettere accentate, simbolo dell' Euro... come mai ?
2- volevo separe il codice dello script dal file index, ed ho inserito nell'head la stringa
PHP:
<script type="text/javascript" src="script.js"></script>
riportando ovviamente il codice
PHP:
<script type="text/javascript">
$(document).ready(function() {
    		pieno    = 350;
    		scontato = 250;

    		$("#licenze, #nazione, #professione").change(function() {
        	var num = parseInt($("#licenze").val());

        	if (num > 5) {
           	var costo = scontato * num;
        	} else {
            	var costo = pieno * num;
        	}

        	if ($("#professione").val() != "0" || $("#nazione").val() == "estero") {
            	var cnpaia = (costo / 100) * 4 ;
        	} else {
            	var cnpaia = 0 ;
        	}

        	if ($("#nazione").val() == "italia") {
            	var iva = ((costo + cnpaia) / 100) * 21;
        	} else {
            	var iva = 0;
        	}

        	if ($("#professione").val() == "2" || $("#nazione").val() == "estero") {
            	var ritenuta = 0 ;
        	} else {
            	var ritenuta = (costo / 100) * 20 ;
        	}

        	var totale = costo + cnpaia + iva -ritenuta;
        	var totale = totale.toFixed(2);

        	$("#costo").val(costo);
        	$("#cnpaia").val(cnpaia);
        	$("#iva").val(iva);
        	$("#ritenuta").val(ritenuta);
        	$("#totale").val(totale);
    		});
	});
</script>

all'interno di script.js
Cosi facendo però non funziona... dove sbaglio?

Grazie, M
 
ps.
il problema dei caratteri speciali lo ho risolto inserendo

<meta http-equiv="Content- Type" content="text/html; charset=iso-8859-1">
 

Discussioni simili