Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254

    Somma Differenza e controllo

    Salve.
    premetto che non conosco niente di JS.

    Vorrei realizzare uno script che mi faccia due operazioni e un controllo.
    Nella speranza di spiegarmi al meglio faccio questo esempio




    Totale1 = 100 |questo il numero di partenza
    A 10
    B 5
    C 5
    TOTALE2 80 |questa è la differenza tra il Totale1 e la somma di A+B+C
    -------------------
    D 10
    E 30
    F 40
    -------------------
    TOTALE3 80 |questa è la somma di D+E+F che deve essere uguale a TOTALE2
    in caso contrario mi deve segnalare errore.


    Se c'è qualche volontario lo ringrazio in anticipo.
    lupo

  2. #2
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    :quote:
    lupo

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La cosa si puo` fare senza problemi.

    Per darti uno script "pronto" servono i nomi esatti del tuo form e di tutti i campi.
    La cosa migliore e` che posti il codice HTML del form.

    Devi anche dire che evento/i deve/ono far compilare i campi totali. Potrebbe essere: la scrittura in uno o piu` campi, un bottone apposito, l'invio del form (direi di no), ...
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    Ciao Mich_ e grazie per la disponibilità
    Questo il form

    <body>
    <form name="form1" method="post" action="">



    <input name="Tot_Votanti" type="text" id="Tot_Votanti" value="100">
    Totale Votanti </p>



    <input name="Bianche" type="text" id="Bianche">
    Bianche</p>


    <input name="Nulle" type="text" id="Nulle">
    Nulle </p>



    <input name="Contestate" type="text" id="Contestate">
    Contestate </p>


    <input name="Vot_val" type="text" id="Vot_val">
    Voti validi </p>


    <input name="L1" type="text" id="L1">
    Lista Uno</p>


    <input name="L2" type="text" id="L2">
    Lista Due </p>


    <input name="L3" type="text" id="L3">
    Lista tre</p>



    <input name="Tot_vot" type="text" id="Tot_vot">
    Totale Voti
    </p>
    </form>
    </body>


    Per quanto riguarda gli eventi si tratta di questo:
    1) i campi devono contenere solo numeri;
    2) i totali si devono aggiornare man mano che vendono inseriti i voti;
    3) all'inserimento della Lista3 effettuale il controllo sul totale voti e sul totale voti validi che siano uguali, altrimenti mi deve segnalare errore.

    Spero di essere stato chiaro.
    Ancora ciao
    lupo

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Riscrivo il form, con alcuni attributi in piu`. Ometto i tag non rilevanti.
    codice:
    <form name="form1" method="post" action="">
      <input name="Tot_Votanti" type="text" id="Tot_Votanti" value="100" readonly="true"> Totale Votanti 
      <input name="Bianche" type="text" id="Bianche" onchange="calcola(this.form);">Bianche
      <input name="Nulle" type="text" id="Nulle" onchange="calcola(this.form);">Nulle 
      <input name="Contestate" type="text" id="Contestate" onchange="calcola(this.form);">Contestate
      <input name="Vot_val" type="text" id="Vot_val" readonly="true">Voti validi
    
      <input name="L1" type="text" id="L1" onchange="calcola(this.form);">Lista Uno</p>
      <input name="L2" type="text" id="L2" onchange="calcola(this.form);">Lista Due
      <input name="L3" type="text" id="L3" onchange="calcola(this.form);">Lista tre
    
    <input name="Tot_vot" type="text" id="Tot_vot" readonly="true">Totale Voti
    
    </form>
    Nella head della pagina ci dovra` essere un JS fattocosi`:
    codice:
    <script type="text/javascript">
    function calcola(ff) {
      var tovn = parseInt(ff.Tot_votanti.value);
      var bia = parseInt(ff.Bianche.value);
      var nul = parseInt(ff.Nulle.value);
      var con = parseInt(ff.Contestate.value);
      
      var li1 = parseInt(ff.L1.value);
      var li2 = parseInt(ff.L2.value);
      var li3 = parseInt(ff.L3.value);
    
      var vova = tovn - (bia+nul+con);
      var tovt = li1+li2+li3;
      ff.Vot_val.value = vova;
      ff.Tot_vot.value = tovt;
    
      if(ff.L1.value=="" || ff.L2.value=="" || ff.L3.value=="") {
        return false;
      } else {
        if(vova == tovt) {
          return true;
        } else {
          alert("il totale non torna");
          return false;
        }
      }
    }
    Questa routine andrebbe anche chiamata prima di spedire il form:
    <form name="form1" method="post" action="...." onsubmit="return calcola(this);">

    Non la ho provata (potrebebro esserci errori)
    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 L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    Intanto grazie, adesso lo provo e ti facccio sapere.
    lupo

  7. #7
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    Purtroppo non sunziona.
    Mi segnala errore di pagina non appena digito il primo campo e poi non fa i controlli.

    codice:
    function calcola(ff) {
      var tovn = parseInt(ff.Tot_votanti.value);
      var bia = parseInt(ff.Bianche.value);
      var nul = parseInt(ff.Nulle.value);
      var con = parseInt(ff.Contestate.value);
      
      var li1 = parseInt(ff.L1.value);
      var li2 = parseInt(ff.L2.value);
      var li3 = parseInt(ff.L3.value);
    
      var vova = tovn - (bia+nul+con);
      var tovt = li1+li2+li3;
      ff.Vot_val.value = vova;
      ff.Tot_vot.value = tovt;
    
      if(ff.L1.value=="" || ff.L2.value=="" || ff.L3.value=="") {
        return false;
      } else {
        if(vova == tovt) {
          return true;
        } else {
          alert("il totale non torna");
          return false;
        }
      }
    }
    </script>
    </head>
    
    <body>
    <form name="form1" method="post" action="" onsubmit="return calcola(this);"> 
      
    
    
        <input name="Tot_Votanti" type="text" id="Tot_Votanti" value="100" readonly="true"> 
      Totale Votanti</p>
      
    
        <input name="Bianche" type="text" id="Bianche" onchange="calcola(this.form);">
        Bianche</p>
      
    
        <input name="Nulle" type="text" id="Nulle" onchange="calcola(this.form);">
        Nulle</p>
      
    
        <input name="Contestate" type="text" id="Contestate" onchange="calcola(this.form);">
        Contestate</p>
      
    
        <input name="Vot_val" type="text" id="Vot_val" readonly="true">
        Voti validi</p>
      
    
        <input name="L1" type="text" id="L1" onchange="calcola(this.form);">
        Lista Uno</p>
      
    
        </p>
        <input name="L2" type="text" id="L2" onchange="calcola(this.form);">
        Lista Due</p>
      
    
        <input name="L3" type="text" id="L3" onchange="calcola(this.form);">
        Lista tre</p>
      
    
        <input name="Tot_vot" type="text" id="Tot_vot" readonly="true">
        Totale Voti </p>
    </form> 
    </body>
    lupo

  8. #8
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    ciao Mich_

    funziona tutto alla perfezione, c'era un solo piccolo, insignificante e stupido errore (Tot_Votanti) nel form invece di (Tot_votanti).

    Grazie mi hai risolto un grande problema.

    Visto che ci sono è possibile fare in modo che durante l'inserimento non venga visualizzato NaN.


    lupo

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Meno male che l'errore lo hai trovato: sarebbe stata dura con quell'errore da remoto.

    Sei fortunato: lo script e` organizzato bene, e sipuo` fare anche quello che chiedi con poche modifiche:

    ff.Vot_val.value = (vova==NaN) ? "" : vova;
    ff.Tot_vot.value = (tovt==NaN) ? "" : tovt;

    In pratica se e` NaN scrive niente, altrimenti scrive il valore
    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 L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    thanks
    merci
    las gracias


    dimenticavo GRAZIE
    lupo

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.