Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66

    controllo somma valori su invio form

    ciao ho un form in cui si immettono dei valori e vorrei effettuare un controllo con una funzione verifica in cui sei la somma dei valori immessi e uguale a 100 allora tutto va bene e mi ritorna il comando per l'invio del form, mentre se il valore è diverso da 100 mi blocca l'invio e mi manda un messaggio di allerta del tipo "la somma deve essere 100"
    come posso fare, ho fatto diverse prove ma tutte a vuoto, se qualcuno ha qualche suggerimento è ben accetto, grazie

    questo qui sotto è il codice del form di invio dati

    codice:
    <form method="POST" name="domanda" id="domanda" onSubmit="return verifica()">
                            <input name="perconaraspi" type="text" id="perconaraspi" value=" ">
                            <input name="perconaraspr" type="text" id="perconaraspr" value=" ">
                            <input name="perconararic" type="text" id="perconararic" value=" ">
                            <input name="perconaraalt" type="text" id="perconaraalt" value=" ">
                            <input type="submit" name="Submit" value="&gt;&gt;">
      </form>

  2. #2
    Anzitutto il value dei campi di testo deve essere una stringa vuota, mentre scrivendo value=" " il campo contiene uno spazio (che è una stringa). Quindi, se l'utente immette un numero senza eliminare lo spazio, JavaScript non potrà sommare i valori dei campi di testo, non essendo numeri. Tutto quello che i campi di testo contengono è considerato sempre come stringa, quindi con uno spazio davanti, JavaScript non riesce a fare la conversione implicita del valore dei campi da stringa a numero e di conseguenza, non riesce a sommarli.

    Poi, la tua funzione deve semplicemente fare la somma dei valori dei campi e controllarla. Se la somma è diversa da 100, deve ritornare false, altrimenti true.

    codice:
    function verifica() {
    val1 = document.getElementById("perconaraspi").value;
    val2 = document.getElementById("perconaraspr").value;
    val3 = document.getElementById("perconararic").value;
    val4 = document.getElementById("perconaraalt").value;
    totale = val1 + val2 + val3 + val4;
    if (totale!=100) {
    alert("La somma deve essere 100!");
    return false;
    }
    else {
    return true;
    }
    }
    Naturalmente, dovresti modificare la funzione anche per controllare che gli input dell'utente siano effettivamente numeri e non stringhe (puoi usare una regular expression).

    PS: il codice (X)HTML della pagina andrebbe scritto tutto minuscolo per correttezza e aderenza agli standard. Non dovresti scrivere method="POST", name="Submit" e onSubmit.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    grazie mille seed_squall_it,

    ho provato il codice che mi hai suggerito, ma non mi funziona come dovrebbe, cioè mi da come risposta true solo nel caso in cui il 100 sia solo in una delle variabili, non mi fa la somma, se io ad esempio metto 50 in perconaraspi e 50 in perconaraspr mi fa comparire l'alert, mentre se metto il 100 solo in una casella ad esempio perconaraspi, mi funziona.

    ti ringrazio anche per le lettere maiuscole e minuscole, ma è stato dreamweaver a inserirle in automatico a parte il comando onSubmit che l'ho inserito io.

    per quanto riguarda le regular expression non sono molto pratico, ma penso che potrei evitarle in quanto se cmq qualcuno mi mette qualcosa che non è un valore, quando viene fatta la somma non la calcola e mi blocca lo stesso l'invio.......correggimi se ho detto una cavola :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    ho risolto, ma correggetemi se ho fatto qualcosa di sbagliato o se esiste un comando più appropriato:

    codice:
    <script type="text/javascript">
    <!--
    function verifica() {
    val1 = parseInt(document.domanda.perconaraspi.value);
    val2 = parseInt(document.domanda.perconaraspr.value);
    val3 = parseInt(document.domanda.perconararic.value);
    val4 = parseInt(document.domanda.perconaraalt.value);
    totale = val1 + val2 + val3 + val4;
    if (totale!=100) {
    alert("La somma deve essere 100!");
    return false;
    }
    else {
    return true;
    }
    }
    //-->
    </script>
    ciao e grazie

  5. #5
    Hai ragione...si vede che è parecchio che non uso JavaScript! Come dicevo, i valori recuperati dai campi di testo sono stringhe, quindi devi giustamente usare parseInt() per convertirle in numeri. Penso che tu possa anche usare una sintassi come:

    codice:
    parseInt(document.getElementById("ID_CAMPO").value);
    dovrebbe funzionare lo stesso ed è sicuramente più aderente agli standard (non che passare per l'oggetto form sia sbagliato, ma viste le specifiche del W3C, sto cercando anche io di accedere agli oggetti con getElementById() per avere codice conforme).

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    grazie mille, adesso vado a magna poi provo a sostituire con getElementById

    buon appetito

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.