Visualizzazione risultati 1 fino 13 di 13

Discussione: script somma campi

  1. #1
    Guest

    Predefinito script somma campi

    Salve a Tutti!

    Ho la necessità di verificare che la somma di cinque campi di un form sia pari a 20 (o cmq ad un numero definito).
    Nel caso in cui la somma sia minore o maggiore la richiesta non viene processata (ipotizzavo un alert) fino a quando la somma di questi campi sia pari a 20.

    Ho provato a fare questo codice, ma purtroppo non conosco a fondo lo javascript..

    <script type="text/javascript">
    function verify(AGILITA, FORZA, RESISTENZA, RIFLESSI, TEMPRA)
    {
    SOMMA = AGILITA.value + FORZA.value + RESISTENZA.value + RIFLESSI.value + TEMPRA.value;
    if (SOMMA > 20)
    {
    alert('La somma dei bonus deve essere pari a 20');
    return false;
    }
    if (SOMMA < 20)
    {
    alert('La somma dei bonus deve essere pari a 20');
    return false;
    }
    }
    </script>


    E nel form:
    <form name="form1" method="post" action="do_registra_utente.php" onsubmit="return verify(AGILITA, FORZA, RESISTENZA, RIFLESSI, TEMPRA)">
    infatti, in questo caso, anche se la somma è 20, appare un alert..
    Come posso fare???

  2. #2
    Guest

    Predefinito

    Posta tutto il form, comunque devi fare il casting ad int dei vari valori che tiri fuori prima di sommarli, altrimenti li concatena.

  3. #3
    Guest

    Predefinito

    Eccolo qui:

    <form name="form1" method="post" action="do_registra_utente.php" onsubmit="return verify(AGILITA, FORZA, RESISTENZA, RIFLESSI, TEMPRA)">
    [.....]
    <input name="AGILITA" type="text" class="textfieldBASE" id="AGILITA" size="20" maxlength="20">
    <input name="FORZA" type="text" class="textfieldBASE" id="FORZA" size="20" maxlength="20">
    <input name="RESISTENZA" type="text" class="textfieldBASE" id="RESISTENZA" size="20" maxlength="20">
    <input name="RIFLESSI" type="text" class="textfieldBASE" id="RIFLESSI" size="20" maxlength="20">
    <input name="TEMPRA" type="text" class="textfieldBASE" id="TEMPRA" size="20" maxlength="20">
    <input type="submit" value="Registra" class="textfieldBASE" name="submit">
    </form>
    Tutto ciò nasce dall'esigenza di non far processare i dati dal server

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da newrim Visualizza messaggio
    Tutto ciò nasce dall'esigenza di non far processare i dati dal server
    Però ricorda che della gente disattiva javascript o il loro browser non lo supporta.

    In questi casi è meglio lavorare lato server...

  5. #5
    Guest

    Predefinito

    Grazie del consiglio

    Tuttavia, meglio mantenere anche il controllo attraverso uno script, che è più veloce!

    Ovviamente, se è possibile farlo

  6. #6
    Guest

    Predefinito

    Codice HTML:
    <script type="text/javascript">
    function verify(AGILITA, FORZA, RESISTENZA, RIFLESSI, TEMPRA)
    {
    var SOMMA = 
    	parseInt(document.getElementById(AGILITA).value) + 
    	parseInt(document.getElementById(FORZA).value) + 
    	parseInt(document.getElementById(RESISTENZA).value) + 
    	parseInt(document.getElementById(RIFLESSI).value) +  
    	parseInt(document.getElementById(TEMPRA).value);
    
    if(SOMMA != 20) {
    	alert('La somma dei bonus deve essere pari a 20');
    	return false;
    }else
    	return true;
    }
    </script>
    fai così

  7. #7
    Guest

    Predefinito

    Purtroppo così non funziona: non esce nessun alert


    Allora, ho provato così:
    <script language="JavaScript">
    function verify()
    {
    var SOMMA =
    document.form1.AGILITA.value +
    document.form1.FORZA.value +
    document.form1.RESISTENZA.value +
    document.form1.RIFLESSI.value +
    document.form1.TEMPRA.value;

    if(SOMMA != 20) {
    alert('La somma dei bonus deve essere pari a 20');
    return false;
    }else
    return true;
    }
    </script>

    <form name="form1" method="post" action="do_registra_utente.php" onsubmit="javascript: return verify();">
    Tuttavia, anche se la somma è pari a 20 compara l'alert..

    come posso fare?
    Ultima modifica di newrim : 25-06-2009 alle ore 11.17.13

  8. #8
    Guest

    Predefinito

    Qui si può vedere in esecuzione lo script -che non funziona- : http://www.newrim.altervista.org/prova.php

  9. #9
    Guest

    Predefinito

    Hai dimenticato una graffa

    Codice HTML:
    <script language="JavaScript">
    function verify() {
    var SOMMA = parseInt(document.form1.AGILITA.value) + parseInt(document.form1.FORZA.value) +
    parseInt(document.form1.RESISTENZA.value) +
    parseInt(document.form1.RIFLESSI.value) +
    parseInt(document.form1.TEMPRA.value);
    
    if(SOMMA != 20) {
       alert('La somma dei bonus deve essere pari a 20');
       return false;
    } else { // qui mancava la graffa!
       return true;
      }
    }
    </script>
    EDIT: puoi copiare anche quello di stoner, perchè è corretto, non mancano graffe.
    Ultima modifica di nokiagames : 25-06-2009 alle ore 11.43.33

  10. #10
    Guest

    Predefinito

    Non va lo stesso..

    Vedi il file prova.php

  11. #11
    Guest

    Predefinito

    Copia il codice che ho postato io e vedrai che funziona !

    Il tuo script è errato perchè non utilizzi parseInt, quindi nell variabile somma i numeri non vengono sommati ma si viene a creare una variabile del genere:
    44444 e non 20!


    P.S. Copiando il codice di stoner avresti risolto, soltanto che non so per quale strano motivo hai tolto parseInt ad ogni campo...
    Ultima modifica di nokiagames : 25-06-2009 alle ore 11.36.22

  12. #12
    Guest

    Predefinito

    Scusa, ma è normale che non funziona se scrivi una cosa per un'altra.
    questo è quello che dovresti avere

    Codice HTML:
    <script type="text/javascript">
    function verify(AGILITA, FORZA, RESISTENZA, RIFLESSI, TEMPRA)
    {
    var SOMMA = 
    	parseInt(document.getElementById(AGILITA).value) + 
    	parseInt(document.getElementById(FORZA).value) + 
    	parseInt(document.getElementById(RESISTENZA).value) + 
    	parseInt(document.getElementById(RIFLESSI).value) +  
    	parseInt(document.getElementById(TEMPRA).value);
    
    if(SOMMA != 20) {
    	alert('La somma dei bonus deve essere pari a 20');
    	return false;
    }else
    	return true;
    }
    </script>
    
    <form name="form1" method="post" action="do_registra_utente.php" onsubmit="return verify('AGILITA', 'FORZA', 'RESISTENZA', 'RIFLESSI', 'TEMPRA')">  
    [.....]
    <input name="AGILITA" type="text" class="textfieldBASE" id="AGILITA" size="20" maxlength="20">
    <input name="FORZA" type="text" class="textfieldBASE" id="FORZA" size="20" maxlength="20">
    <input name="RESISTENZA" type="text" class="textfieldBASE" id="RESISTENZA" size="20" maxlength="20">
    <input name="RIFLESSI" type="text" class="textfieldBASE" id="RIFLESSI" size="20" maxlength="20">
    <input name="TEMPRA" type="text" class="textfieldBASE" id="TEMPRA" size="20" maxlength="20">
    <input type="submit" value="Registra" class="textfieldBASE" name="submit">
    </form>
    Ciao.
    Ultima modifica di stoner : 25-06-2009 alle ore 12.23.11

  13. #13
    Guest

    Predefinito

    Grazie!
    Ora ho risolto!

    Perdonate la mia ignoranza in materia di javascript

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •