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

    fastidioso reset del form

    Ho scritto una funzione che controlla i campi di un form e li invia solamente se tutti sono compilati.

    Questa funziona ma, se trova un campo non compilato, il focus si sposta correttamente ma tutti i dati precedentemente inseriti vengono persi. E' possibile obblicare IE a ricordarli?

    Ecco il codice:
    <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
    <script type="text/javascript">
    <!--
    function Modulo() {
    // Variabili associate ai campi del modulo
    var field1 = document.modulo.name.value;
    var field2 = document.modulo.description.value;

    //Effettua il controllo sul campo field1
    if ((field1 == "") || (field1 == "undefined")) {
    alert("Devi specificare il nome della nuova categoria.");
    document.modulo.name.focus();
    return false;
    }
    //Effettua il controllo sul campo field2
    else if ((field2 == "") || (field2 == "undefined")) {
    alert("Devi fornire una descrizione della categoria.");
    document.modulo.description.focus();
    return false;
    }
    else {
    document.modulo.action = "edit.php?action=c_a";
    document.modulo.submit();
    }
    }
    //-->
    </script>
    </HEAD>
    <BODY>

    <FORM name="modulo" method="POST">
    Nome*: <INPUT type="text" name="name" maxlength="64">

    Descrizione*: <TEXTAREA name="description" rows="4" cols="15"></TEXTAREA>

    <INPUT type="submit" value="Conferma" onClick="Modulo()"><INPUT type="reset" value="Annulla">
    </FORM>


    Ciao e grazie!

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    cambia il codice così

    codice:
    <FORM name="modulo" method="POST">
    Nome*: <INPUT type="text" name="name" maxlength="64">
    
    Descrizione*: <TEXTAREA name="description" rows="4" cols="15"></TEXTAREA>
    
    <INPUT type="button" value="Conferma" onClick="Modulo()"><INPUT type="reset" value="Annulla">
    </FORM>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Ottimo!

    Ma quante ne sapete!?!

    Bye

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    è solo questione di logica

    Priva avevi usato il type=submit() che ovviamente causa l'invio del modulo. A quel punto non puoi più gestire il controllo dei campi, no?

    La tua funzione invece chiama già il metodo submit() dopo la validazione dei campi, quindi è normale che sia sufficiente attivare la funzione con un pulsante semplice
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Niente da obiettare.. sto linguaggio non lo conosco.. vado solo per intuizione..

    Un'altra cosa.. come faccio a controllare che il vaore di un campo sia un intero o un float con due cifre decimali?

    Del tipo che l'utente potrebbe inserire "23" oppure "23,02"... ma nn una lettera..


  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    la cosa migliore sarebbe usare le espressioni regolari
    intanto togliamo l'elseif per semplicità.
    Supponiamo che il controllo vada fatto per il campo field1

    codice:
    <script type="text/javascript">
    <!--
    function Modulo() {
    // Variabili associate ai campi del modulo
    var field1 = document.modulo.name.value;
    var field2 = document.modulo.description.value;
    
    //Effettua il controllo sul campo field1
    if ((field1 == "") || (field1 == "undefined")) {
    alert("Devi specificare il nome della nuova categoria.");
    document.modulo.name.focus();
    return false;
    }
    //Effettua il controllo sul campo field2
    if ((field2 == "") || (field2 == "undefined")) {
    alert("Devi fornire una descrizione della categoria.");
    document.modulo.description.focus();
    return false;
    }
    
    
    // Qui controlli che il numero sia un intero oppure
    // un float con esattamente due decimali
    if (field1.match(/^(\d*?)(\.\d{2})?$/)) {
      alert("il campo field1 non è nel formato previsto");
      return false;
    }
    
    
    
    document.modulo.action = "edit.php?action=c_a";
    document.modulo.submit();
    
    }
    //-->
    </script>
    P.s. Ho usato il punto come separatore decimale
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    <INPUT type="submit" value="Conferma" onClick="Modulo()">

    In generale ho la tendenza ach'io a non utilizzare il tipo submit ma il tipo button, ma comunque, dato che presenta dei vantaggi, quella istruzione va cambiata con:

    <INPUT type="submit" value="Conferma" onClick="return Modulo();">


    In altre parole, l'azione del submit viene bloccata restituendo false nell'evento onclick.

    Tra parentesi, è lo stesso in questo coaso:

    <a href="......" onclick="return Modulo();">.....
    Cioè, anche qui, l'azione predefinita viene bloccata restituendo false nell'evento onclick
    Pietro

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.