Visualizzazione risultati 1 fino 11 di 11

Discussione: Problema javascript cicla sempre per vero

  1. #1
    Data registrazione
    15-03-2011
    Residenza
    Padova
    Messaggi
    194

    Unhappy Problema javascript cicla sempre per vero

    Codice HTML:
    <html>
    <title>PROBLEMA DELLE SCORTE</title>
    <head>
    
    <script type="text/javascript">
    function controlla() 
    {
               if(document.modulo.nor1.value == '' || document.modulo.co1.value == '' || document.modulo.no1.value == '' || document.modulo.cm.value == '') 
         {
                    alert("Compilare tutti i campi!");
                   
                    return false;
         }
    
    
     if(document.modulo.nor1.value != '[0-9]' || document.modulo.co1.value !='[0-9]' || document.modulo.no1.value != '[0-9]' || document.modulo.cm.value != '[0-9]') 
         {
                    alert("Inserire solo numeri!");
                   
                    return false;
         }
    
    return true;
    
    
    
    }
    </script>
    </head>
    <body background="s1.gif">
    <H1>PROBLEMA DELLE SCORTE</H1>
    <form name="modulo" method="post" Action="out.php" onsubmit="return controlla()">
      
    
    Inserisci quantità (in q):
        <input type="text" name="nor1" size="40"> <br/>
       
    Inserire costo di ordinazione:
        <input type="text" name="co1" size="40"> <br/>
    
    Inserire costo di magazzino:
        <input type="text" name="no1" size="40"> <br/>
    
    Inserire capacità massima di magazzino (in q):
        <input type="text" name="cm" size="40"> <br/>
    
    
    
    <input type="submit" value="Calcola">
        
    
    <input type="reset" value="Cancella Tutto"name="rifare"><BR><BR><BR><BR>
      <input type="button" value="Torna al menù programmi" OnClick="document.location.href='programmi.htm'"><BR><BR>
    <a href="homepage.htm"><img src="casa.gif"></a>
    </form>
    
     </body>
    </html>

    questa funzione dovrebbe controllare i campi di questa pagina http://giacomofabbian.altervista.org/sco.htm
    il problema è che la seconda parte di codice non funziona anche quando inserisco numeri mi da errore perchè???

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Perché l'operatore != (diverso) compara due oggetti, in questo caso stringhe, e restituisce false solo quando sono uguali, in tutti gli altri casi restituirà true. Quello che vuoi fare tu è lavorare con le espressioni regolari, puoi usare il metodo test per verificare se una data stringa soddisfa un'espressione regolare.
    Nel tuo caso devi scrivere così:
    Codice:
    /^\d+$/.test(stringa da verificare)
    Ultima modifica di karl94 : 22-06-2011 alle ore 20.49.55

  3. #3
    Data registrazione
    15-03-2011
    Residenza
    Padova
    Messaggi
    194

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Perché l'operatore != (diverso) compara due oggetti, in questo caso stringhe, e restituisce false solo quando sono uguali, in tutti gli altri casi restituirà true. Quello che vuoi fare tu è lavorare con le espressioni regolari, puoi usare il metodo test per verificare se una data stringa soddisfa un'espressione regolare.
    Nel tuo caso devi scrivere così:
    Codice:
    /^\d+$/.test(stringa da verificare)
    Niente if quindi???questo è il caso delle stringhe comunque
    e in caso di numeri???

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    No, l'if rimane, devi solo sostituire
    Codice:
    stringa da verificare != '[0-9]'
    con
    Codice:
    /^\d+$/.test(stringa da verificare)

  5. #5
    Data registrazione
    15-03-2011
    Residenza
    Padova
    Messaggi
    194

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    No, l'if rimane, devi solo sostituire
    Codice:
    stringa da verificare != '[0-9]'
    con
    Codice:
    /^\d+$/.test(stringa da verificare)
    Ok grazie KARL94

    karl94 l'espressione che mi hai indicato da errore con i numeri a me serviva con le lettere
    Ultima modifica di karl94 : 22-06-2011 alle ore 21.19.14

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Raggruppa le condizione con delle parentesi e anteponi un punto esclamativo, così:
    Codice:
    if(!(/^\d+$/.test(stringa da verificare) || /^\d+$/.test(stringa da verificare)))

  7. #7
    Data registrazione
    15-03-2011
    Residenza
    Padova
    Messaggi
    194

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Raggruppa le condizione con delle parentesi e anteponi un punto esclamativo, così:
    Codice:
    if(!(/^\d+$/.test(stringa da verificare) || /^\d+$/.test(stringa da verificare)))
    niente da fare e scusa per il post consecutivo prima o poi mi leggerò completamente il regolamento del forum
    Ultima modifica di giacomofabbian : 22-06-2011 alle ore 21.35.06

  8. #8
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Puoi indicare l'indirizzo o il codice della pagina con le ultime modifiche?

  9. #9
    Data registrazione
    15-03-2011
    Residenza
    Padova
    Messaggi
    194

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Puoi indicare l'indirizzo o il codice della pagina con le ultime modifiche?
    http://giacomofabbian.altervista.org/sco.htm

  10. #10
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Hai messo una parentesi di troppo, il codice corretto è
    Codice:
    if(!(/^\d+$/.test(document.modulo.co1.value) || /^\d+$/.test(document.modulo.co1.value) || /^\d+$/.test(document.modulo.no1.value) || /^\d+$/.test(document.modulo.cm.value)))

  11. #11
    Data registrazione
    15-03-2011
    Residenza
    Padova
    Messaggi
    194

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Hai messo una parentesi di troppo, il codice corretto è
    Codice:
    if(!(/^\d+$/.test(document.modulo.co1.value) || /^\d+$/.test(document.modulo.co1.value) || /^\d+$/.test(document.modulo.no1.value) || /^\d+$/.test(document.modulo.cm.value)))
    Perfetto ora ho finito sto benedetto sito :) grazie karl e agli altri membri del forum che mi hanno aiutato

Regole di scrittura

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