Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    I valori immessi non devono superare 10...

    Sto realizzando un sito, con una specie di gioco di ruolo online in PHP / MySql.


    In uno dei tanti form che servono al gioco, l'utente deve assegnare dei valori alle caratteristiche del proprio personaggio.

    ----

    <form id="form1" name="form1" method="post" action="">
    <label>
    <select name="a" id="a">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    </label>
    <select name="b" id="b">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="c" id="c">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="d" id="d">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="e" id="e">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    il valore totale non deve superare 10
    </form>

    ----

    Come vedete ci sono 5 moduli, dove si possono scegliere valori da 1 a 5. Alla fine delle selezioni però vorrei che la somma totale dei valori immessi dall'utente non superi 10.

    Ovvero: se l'utente mette nel primo form 2, nel secondo 4, nel terzo 1 e nel quarto 1, nel quinto dovrebbero apparire solo i valori "1" e "2", in modo che la somma totale non possa in alcun caso superare 10.

    E' possibile?

  2. #2
    certo che è possibile. Ti spiego in teoria cosa dovresti fare poi quando torno da lavoro ti inserisco lo script da utilizzare.

    In pratica mantieni una variabile con la somma totale attuale. Inserisci un evento onChange per le select che hai utilizzato ed ad ogni nuova selezione fai richiamare una funzione che legge il valore scelto ed effettua la somma nella variabile definita in precedenza.

    A questo punto se la somma supera 10 fai uscire un alert box con un messaggio di avviso o altro.
    Domenico Biancardi from http://www.halmadaxx.com

  3. #3
    Originariamente inviato da halmadaxx
    certo che è possibile. Ti spiego in teoria cosa dovresti fare poi quando torno da lavoro ti inserisco lo script da utilizzare.

    In pratica mantieni una variabile con la somma totale attuale. Inserisci un evento onChange per le select che hai utilizzato ed ad ogni nuova selezione fai richiamare una funzione che legge il valore scelto ed effettua la somma nella variabile definita in precedenza.

    A questo punto se la somma supera 10 fai uscire un alert box con un messaggio di avviso o altro.
    Grazie mille! Attendo lo script allora!

  4. #4
    dovrebbe andare:

    codice:
    <script type="text/javascript">
    function controllaSomma() {
      a = (document.getElementById('a').value)-0;
      b = (document.getElementById('b').value)-0;
      c = (document.getElementById('c').value)-0;
      d = (document.getElementById('d').value)-0;
      e = (document.getElementById('e').value)-0;
      somma = a+b+c+d+e;
      if (somma > 10) {
      	window.alert("Attenzione! La somma totale deve essere al massimo 10!");
    	document.getElementById('invia').disabled = true;
      }
      else {
        document.getElementById('invia').disabled = false;
      }
    }
    </script>
    
    <form id="form1" name="form1" method="post" action="">
    <label>
    <select name="a" id="a" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    </label>
    <select name="b" id="b" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="c" id="c" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="d" id="d" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="e" id="e" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    il valore totale non deve superare 10
    <input type="submit" value="Ok" id="invia">
    </form>
    faccio notare che per convertire i valori da stringa a numero ho sottratto 0 ad ognuno... forse non è il metodo più elegante, ma funziona

    il Possibile l'ho già fatto
    l'Impossibile lo sto facendo
    per i Miracoli ci vuole un po' di tempo
    __________________
    &nbsp; ...quanto sono pirla...

  5. #5
    Originariamente inviato da HenryXIII
    dovrebbe andare:

    codice:
    <script type="text/javascript">
    function controllaSomma() {
      a = (document.getElementById('a').value)-0;
      b = (document.getElementById('b').value)-0;
      c = (document.getElementById('c').value)-0;
      d = (document.getElementById('d').value)-0;
      e = (document.getElementById('e').value)-0;
      somma = a+b+c+d+e;
      if (somma > 10) {
      	window.alert("Attenzione! La somma totale deve essere al massimo 10!");
    	document.getElementById('invia').disabled = true;
      }
      else {
        document.getElementById('invia').disabled = false;
      }
    }
    </script>
    
    <form id="form1" name="form1" method="post" action="">
    <label>
    <select name="a" id="a" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    </label>
    <select name="b" id="b" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="c" id="c" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="d" id="d" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <select name="e" id="e" onChange="controllaSomma();">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    il valore totale non deve superare 10
    <input type="submit" value="Ok" id="invia">
    </form>
    faccio notare che per convertire i valori da stringa a numero ho sottratto 0 ad ognuno... forse non è il metodo più elegante, ma funziona
    Grazie infinite!!!!!!!!!!!!


  6. #6
    bella Henry hai fatto quello che intendevo io in pratica.
    unica nota è la conversione di una stringa in un numero. Si può utilizzare la funzione

    parseInt(string, radix)

    Parameter
    string Required. The string to be parsed
    radix Optional. A number (from 2 to 36) that represents the numeral system to be used

    l'utilizzo è il seguente

    codice:
    <script type="text/javascript">document.write(parseInt("10") + "
    ") 
    document.write(parseInt("10.00") + "
    ") 
    document.write(parseInt("10.33") + "
    ") 
    document.write(parseInt("34 45 66") + "
    ") 
    document.write(parseInt(" 60 ") + "
    ") 
    document.write(parseInt("40 years") + "
    ")
    document.write(parseInt("He was 40") + "
    ")
    </script>
    Domenico Biancardi from http://www.halmadaxx.com

  7. #7
    Originariamente inviato da halmadaxx
    parseInt(string, radix)
    Grazie

    il Possibile l'ho già fatto
    l'Impossibile lo sto facendo
    per i Miracoli ci vuole un po' di tempo
    __________________
    &nbsp; ...quanto sono pirla...

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.