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

    Eseguire 3 function all'onClick

    Ciao a tutti,
    ho 2 textbox e una dropdown in una pagina html e alla pressione del tasto di sottomissione devo eseguire 3 function:
    - function1(); //controlla se sono stati compilati i campi
    - function2(); // controlla il formato dei dati
    - function3(); //controlla la scelta della dropdown

    Il problema che incontro è nel farle eseguire tutte e 3; dal libro di javascript ho letto che per richiamare funzioni multiple si usa il punto e virgola tra le function;
    inoltre se la funzione riscontra anomalie, ritorna return false; altrimenti return true;

    questo l'HTML del button:
    codice:
    <input type="submit" name="Submit" value="Conferma" onclick="return function1();return function2();return function3();"/>
    nell'header, in <SCRIPT>..

    codice:
    function1(){
         ....
         ....
         if (ok){
             return true;
         }
         else{
             return false;
         }
    }
    
    function2{
         ....
         ....
         if (ok){
             return true;
         }
         else{
             return false;
         }
    }
    
    function3{
         ....
         ....
         if (ok){
             return true;
         }
         else{
             return false;
         }
    }
    L'anomalia è che all'esecuzione della prima function, all'istruzione return false o return true , l'esecuzione del javascript si arresta e non vengono eseguite le altre function;

    Ho provato anche ad inglobarle in una unica function ma il problema persiste.

    Cosa sbaglio?
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    return interrompe lo script.

    Prova con
    codice:
    return function1() && function2() && function3();
    No

  3. #3
    Quote Originariamente inviata da tampertools Visualizza il messaggio
    return interrompe lo script.

    Prova con
    codice:
    return function1() && function2() && function3();
    Ciao, intanto ti ringrazio per la risposta.

    Il codice che mi hai indicato è per l'action dell'onClick oppure da mettere per ogni return di ciascuna function?
    Comunque domani appena rientro lo provo

    Grazie ancora

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    action
    No

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    30
    Ciao, puoi anche omettere il return.

    onclick=" function1(); function2(); function3(); ....."

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    se deve prevenire il comportamento dell'elemento deve lasciare il return
    No

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    30
    Quote Originariamente inviata da tampertools Visualizza il messaggio
    se deve prevenire il comportamento dell'elemento deve lasciare il return
    Molto probabilmente sono io a non aver capito cosa intendi, ma io ho sempre omesso il return.

  8. #8
    Ciao,
    grazie a tutti per i vostri consigli; purtroppo dopo un giorno di prove non ne sono venuto a capo;
    a scanso di equivoci vi posto il codice:

    codice:
    codice:
    <head>
         <title>TODO supply a title</title>
    <script type="text/javascript">
        function myFunction(){    
            
            ControlloSceltaOperazione();
            
            //CONTROLLO SCELTA OPERAZIONE
            function ControlloSceltaOperazione(){  
            
                var ListaOperazioni = document.form.Operazione;
                var selezione = ListaOperazioni.options
    [ListaOperazioni.selectedIndex].value; 
                
                if (selezione === "1"){
                    ListaOperazioni.style.borderColor="red";
                    ListaOperazioni.style.backgroundColor="yellow";
                    for(var i = 0; i < ListaOperazioni.options.length; i++) {
                            if(i === ListaOperazioni.selectedIndex) {
                                ListaOperazioni.options[i].style.backgroundColor = 'yellow';
                            } else {
                                ListaOperazioni.options[i].style.backgroundColor = 'green';
                            }
                    }
                    alert("Non hai selezionato una operazione");
                }
                else{
                    return true;
                }
                
            
            
            ControlloPresenzaVirgola();    
            
            //CONTROLLO PRESENZA VIRGOLA
            function ControlloPresenzaVirgola(){
                
                var NumeroA = document.form.a.value;
                var NumeroB = document.form.b.value;
                var virgola = ",";
    
    
                if (NumeroA.indexOf(virgola) > -1 ) {         
                    if(NumeroB.indexOf(virgola) > -1 ) {                   
                        alert( "sostituire la virgola con il punto in entrambi i campi" );
                        return false;
                    }
                    else{
                         alert( "sostituire la virgola con il punto nel campo valore A" );
                        return false;
                    }
                }
                else if(NumeroB.indexOf(virgola) > -1){
                     alert( "sostituire la virgola con il punto nel campo valore B" );
                     return false;
                }
                else{
                    return true;
                }
            }
            
            
            
            ControlloPresenzaLettera();
            
            //CONTROLLO PRESENZA LETTERA
            function ControlloPresenzaLettera(){
                
            
                var NumeroA = document.form.a.value;
                var NumeroB = document.form.b.value;
                
                if(isNaN(NumeroA)){
                    if(isNaN(NumeroB)){
                        alert( "hai inserito un carattere non valido in entrambi i campi! Sono ammessi numeri e punto" );
                        return false;
                    }
                    else{
                        alert("hai inserito un carattere non valido nel campo A!Sono ammessi numeri e punto");
                        return false;
                    }
                }
                else if(isNaN(NumeroB)){
                    alert("hai inserito un carattere non valido nel campo B!Sono ammessi numeri e punto");
                    return false ;
                }
                else {
                    alert("sembra tutto ok, sottometti");
                    return true;
                }          
            }   
        }
    }
    </script>
    </head>
    
    
    <body>
           <form action="../Operazioni" id="form2" name="form" method="post"> 
           <div>Inserisci Valore A :<input ID="a" name="a" type="text" value=""/><br />
                Inserisci Valore B :<input ID="b" name="b" type="text" value=""/>
                    <SELECT ID="Operazione" name="Operazione">
                    <OPTION VALUE="1" SELECTED> -- Seleziona un'operazione</OPTION>
                    <OPTION VALUE="2" > Somma </OPTION>
                    <OPTION VALUE="3" > Sottrazione </OPTION>
                    <OPTION VALUE="4" > Moltiplicazione </OPTION>
                    <OPTION VALUE="5" > Divisione </OPTION>  
                    </SELECT>
            </div>
           <input type="submit" name="Submit" value="Conferma" onclick="return myFunction();"/>
         </form>        
        </body>

    quello che vorrei è che venissero eseguiti tutti e tre i controlli...
    Ultima modifica di nicoletto; 24-09-2014 a 00:25

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    @nicoletto l'ho sistemato togliendo due funzioni inutili (la virgola, il controllo numeri) con un controllo il linea sul campo (volendo anche la select si potrebbe sintetizzare eseguendo la verifica il linea) quello che hai scritto non si codice vecchio la sintassi documento.nomeform è obsoleta, ridondante tre funzioni per un form cosi semplice sono assurde inserire richiami nella head (ControlloPresenzaVirgola(),ControlloSceltaOperazi one(), etc...) a casaccio perché non si conosce il linguaggio (no comment)
    Comunque qui trovi un esempio funzionante, spero ti possa essere utile

    Ultima modifica di cavicchiandrea; 24-09-2014 a 02:00
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.