Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di gim
    Registrato dal
    Oct 2000
    Messaggi
    506

    Calcolo automatico tra campi

    Ciao a tutti.
    Ho tre campi: a, b, c.
    a=10
    b=50%
    c=5

    In c ho il risultato della percentuale b, di a. a è un valore fisso non modificabile.
    Esite un modo affinchè, modificando il valore di b, a mano, mi appaia automaticamente il risultato in c?

    Cioè, se scrivessi a mano, nel campo b "25" automaticamente dovrebbe apparire "2,5" in c?
    E viceversa, se scrivessi 9 in c, mi apparirebbe automaticamente 90% in b?

    Grazie

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    richiama la funzione che usi per il calcolo all'evento onkeyup del campo percentuale
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di gim
    Registrato dal
    Oct 2000
    Messaggi
    506
    Ciao. Scusa, ma il calcolo è il risultato di un'operazione tramite asp. In sostanza, mi ritrovo con questi valori nei tre campi di cui due, l'utente può modificarli. Però non ho idea di come effettuare il calcolo in javascript o di come generarmi una funzione javascript che lo faccia.

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    applica un id ai tre campi input (es. c1, c2, c3)

    poi
    codice:
    <head>
    <script>
    function calcola() {
       v1 = document.getElementById('c1').value;
       v1 = parseInt(v1, 10);
    
       v2 = document.getElementById('c2').value;
       v2 = parseInt(v2, 10);
    
      document.getElementById('c3').value = v1 * v2 /100;
       
    }
    </script>
    </head>
    
    <body>
    ...
    Valore
    <input type="text" id="c1" > 
    Percentuale: (senza %)
    <input type="text" id="c2" onkeyup="calcola()"> 
    totale:
    <input type="text" id="c3"> 
    ...
    provalo... sono in velocità
    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di gim
    Registrato dal
    Oct 2000
    Messaggi
    506
    Ciao, grazie mille. Ho fatto una prova al volo del tuo codice e funziona perfettamente; ora provo ad adattarlo al mio codice e vediamo che succede.
    Nel frattempo al volo, ma senza fretta, se devi scappare, per generare la stessa funzione inversa, da applicare contemporaneamente al terzo campo? cioè scrivendo il valore nell'ultimo campo, ottenere in automatico la percentuale nel secondo?

    Intanto grazie.

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il procedimento è analogo: ti crei una funzione che fa il calcolo inverso e la richiami nello stesso modo (sul campo c)
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di gim
    Registrato dal
    Oct 2000
    Messaggi
    506
    Infatti funziona perfettamente. Grazie mille!
    Ora provo ad adeguarlo al mio codice.
    Ciao e grazie

  8. #8
    Utente di HTML.it L'avatar di gim
    Registrato dal
    Oct 2000
    Messaggi
    506
    Ciao, scusa ancora.
    Il meccanismo funziona perettamente, solo che in alcuni calcoli (pare quando ci sono decimali) non è preciso; esempio, ho:

    a=28,16
    b= inserisco a mano 50
    c= ottengo 14 (anzichè 14,8)

    In un altro campo ho:
    a=355,9
    b= inserisco 50
    c= ottengo erroneamente 177.5 (che se lo moltiplico per 2 dà 355)

    Dove posso aggiustare il tiro?

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    usa la funzione parseFloat invece di parseInt, ad es.

    v1 = parseFloat(v1);

    il tuo prossimo problema sarà l'arrotondamento di cifre visto che i calcoli in virgola mobile generano numeri (del tipo 14.7999999999 anziché 14.8) ma è un problema già affrontato nel forum (fai una ricerca)
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    Utente di HTML.it L'avatar di gim
    Registrato dal
    Oct 2000
    Messaggi
    506
    Ciao e grazie. In effetti, il problema del numero di decimali lo avevo già riscontrato ed ho già fatto una ricerca.
    Purtroppo però con parseFloat non ho risolto; continuo ad ottenere 19 anzichè 19.25.
    Mi viene il sospetto che magari sbaglio qualcosa bnel calcolo, ma lo escluderei; ora ricontrollo il tutto. Nel frattempo, un'altra dritta? cosa potrebbe essere?

    Grazie ancora.

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