Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    residenza
    Cittá del Messico (Messico)
    Messaggi
    610

    calcolare lo sconto in automatico

    Ho un form con 3 campi textbox chiamati:
    - costo unitario
    - sconto
    - netto

    il "costo unitario" ha già un suo value predefinito, mentre il campo "sconto" inizialmente è 0. Mi servirebbe uno script che calcola in automatico il terzo campo "netto" che viene calcolato con costo unitario - sconto (naturalmente variabile). Ossia se il campo costo unitario è 100 ed io inserisco manualmente nel campo sconto 10 il terzo campo in automatico deve far apparire 90.


    Ciao e Grazie
    M.Solazzi
    from
    Mexico City!!

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    questo negli header:
    <script>
    function calcola(){
    document.nome_form.nome_campo_netto.value = document.nome_form.nome_campo_costo_uniitario.valu e - document.nome_form.nome_campo_sconto.value
    }
    </script>
    e poi
    <body onload="calcola()">

    dovrebbe andare così...se non va fammi sapere

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    residenza
    Cittá del Messico (Messico)
    Messaggi
    610
    scusami non mi sono spiegato bene l'evento deve essere sul "onchange" non sull'onload. Cioè il calcolo deve essere effettuato prima di inviare i dati del form. Credo che bisogna inserire un controllo onchange sul campo sconto giusto?

    i campi si chiamano così :

    Prezzo unitario = PREZZO_SERVER
    Sconto (è un valore %) = SCONTO
    Netto = NETTO

    il form si chiama "carrello"


    lo script che mi hai scritto l'ho modificato così ma non mi riconosce i campi...

    <script language="javascript">
    function calcola(){
    document.carrello.NETTO.value =
    document.carrello.PREZZO_SERVER.value -
    document.carrello.SCONTO.value
    }
    </script>

    e poi nel campo text sconto ho aggiunto questo onchange="javascript:calcola();" ma mi da un errore

    grazie
    M.Solazzi
    from
    Mexico City!!

  4. #4
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    <script language="javascript">
    function calcola(){
    document.carrello.NETTO.value =
    document.carrello.PREZZO_SERVER.value -
    document.carrello.SCONTO.value
    }
    </script>
    se il prezzo è in percentuale dovresti convertirlo in numero...se mi dici l'operazione matematica per calcolare l'x% su y io te la converto in javascript...

    per il richiamo al onchange: che errore ti da?

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Oronze, ti sei dimenticato la matematica di seconda media?

    codice:
    function calcola(sc) {
      var prez = parseFloat(sc.form.PREZZO.value);
      var scon = parseFloat(sc.value);
      sc.form.NETTO.value = Math.round(prez - prez*scon) / 100; // arrotondato 
    }
    da chiamare con:
    <input type="text" name="SCONTO" onchange="calcola(this);">

    Nota che ho passato l'oggetto campo, in modo da non dover richiamare il document ogni volta.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    residenza
    Cittá del Messico (Messico)
    Messaggi
    610
    L'errore è 'document.carrello.NETTO' è nullo o non è un oggetto.


    il campo textbox si chiama NETTO ed il form si chiama carrello. Credo che ci sia un problema di sintassi.

    il calcolo è così :

    importo da scontare = (costo unitario . sconto)/100 si trova l'importo da scontare

    netto = costo unitario - importo da scontare

    grazie
    M.Solazzi
    from
    Mexico City!!

  7. #7
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    [QUOTE]Originariamente inviato da Mich_
    Oronze, ti sei dimenticato la matematica di seconda media?

    [code]
    Sì...ho la testa piena di trigonometria e geometria solida e piana ...a malapena mi ricordo come si fa 2 + 2

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  8. #8
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Usa il codice di mich_ io mi ero dimenticato di fare un po' di cose

    function calcola(sc) {
    var prez = parseFloat(sc.form.PREZZO.value);
    var scon = parseFloat(sc.value);
    sc.carrello.NETTO.value = Math.round(prez - prez*scon) / 100; // arrotondato
    }

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Pare che anch'io abbia fatto confusione!!

    Questo e` il conto corretto.
    sc.form.NETTO.value = Math.round((prez - prez*scon/100) *100) / 100; // arrotondato

    Per l'errore di Solazzi, invece, non saprei cosa dire: ci dev'essere un errore di sintassi, ma non vedendo la pagina ne` lo script effettivamente usato e` difficile diagnosticare.

    Ricorda che JS e` case-sensitive, e che quegli script devono essere inseriti nella stessa pagina in cui c'e` il form.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da oronze
    sc.carrello.NETTO.value =
    }
    Questo e` sbagliato: non esiste nessun oggetto di nome carrello dentro il campo sconto. Invece esiste l'oggetto (predefinito) form, che si riferisce al form che contiene il campo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.