Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Funzione verifica modulo

    Ciao a tutti, ho una JSP in cui inserisco dei parametri da FORM e vorrei verificare la correttezza nell'immissione, purtroppo la funzione Javascript di controllo non viene invocata e non mi spiego il perchč, sapreste voi?

    codice:
    <%--     Document   : inserisciprenotazione
        Created on : 4-gen-2014, 18.12.14
        Author     : Amministratore
    --%>
    
    
    <%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>
    
    
    
    
    
    
    <!DOCTYPE html>
    <html>
     <head>
             <link href="stile.css" rel="stylesheet" type="text/css">
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
             <script src="js/ajaxsbmt.js" type="text/javascript"></script>
                     
             
    
    
     </head>
    
    
    
    
        
    
    
    <% HttpSession s=request.getSession();%>
    
    
    
    
        <body>
            
     <script language="Javascript">
         
    function verifica(modulo)
        {
            if (modulo.username.value == "") {
                alert("Campo -Username- mancante.\nModulo non spedito.");
                modulo.username.focus();
                return false;
            }
                    
            if (modulo.nome.value == "") {
                alert("Campo -Nome- mancante.\nModulo non spedito.");
                modulo.nome.focus();
                return false;
            }
            if (modulo.cognome.value == "") {
                alert("Campo -Cognome- mancante.\nModulo non spedito.");
                modulo.cognome.focus();
                return false;
                    }
                    
                     if (modulo.lista.value == "") {
                alert("Campo -lista- mancante.\nModulo non spedito.");
                modulo.lista.focus();
                return false;
                    }
                    
                   
                    if (modulo.gg.value > 31 || modulo.gg.value < 0) {
                        alert("Giorno di consegna non corretto, modulo non inviato!");
                        modulo.gg.focus();
                         return false;
                    }
        
                    if (modulo.mm.value > 12 || modulo.mm.value < 0) {
                          alert("Mese di consegna non corretto, modulo non inviato!");
                          modulo.mm.focus();
                            return false;
                    }
        
                    if (modulo.aaaa.value < 2013) {
                          alert("Anno di consegna non corretto, modulo non inviato!");
                          modulo.aaaa.focus();
                            return false;
                    }
                    
            
                  
                    if (modulo.ora.value=="" || modulo.ora.value <0 || modulo.ora.value >24) {
                          alert("Controlla l'ora inserita! Specificare un orario tra pranzo e cena!, modulo non inviato!");
                          modulo.ora.focus();
                            return false;
                    }
                    
                     if (modulo.minuti.value=="" || modulo.minuti.value <0 || modulo.minuti.value >60) {
                          alert("Errore, specificare i minuti nel formato corretto! (00-59) modulo non inviato!");
                          modulo.minuti.focus();
                            return false;
                    }
                
                    
                    
                return true;
            }
                    
      
    </script>
    
    
            
        
     <%   if(!(s.isNew())){ 
         
                out.println("<table>"+       
                    
                "<form name='modulo' action='"+request.getContextPath()+"/Controller?state=order' onSubmit='return verifica(this);' method='POST'>"+
                        
               "<b>Nome:</b>"+
                "<br>"+
                "<input type='text' name='nome'>"+
                "<br>"+
                "<b>Cognome:</b>"+
                "<br>"+
                "<input type='text' name='cognome'>"+
                "<br>"+
                "<b>Lista:</b>"+
                "<br>"+
                "<input type='text' name='lista'>"+
                "<br>"+    
                "<b>Data:</b>"+
                "<br>"+
                
                "<input type = 'text' name = 'gg' size = '3'>"+"gg"+
                "<input type = 'text' name = 'mm' size = '3'>"+"mm"+
                "<input type = 'text' name = 'aaaa' size = '6'>"+"aaaa"+ 
                "<br>"+
                "<b>Ora:</b>"+
                "<br>"+
                "<input type='text' name='ora'>"+"h"+
                "<br>"+
                "<input type='text' name='minuti'>"+"m"+
                "<br>"+ 
                "<input type='submit' value=' Inserisci Prenotazione '>"+
                "<input type='reset' value='Cancella'>"+
                "</form>"+
                "</table>");
        }
                
                    else {
                        out.println("<h1>Errore! per potere inserire una prenotazione devi essere loggato!</h1> ");
                    }
            
             %>   
                
                
                
           
        </body>
    </html>

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Solitamente questo accade quando ci sono degli errori nel markup o, pių probabilmente, dentro alla funzione JavaScript. Sembra che la funzione non venga richiamata, in realtā il controllo esce se vi sono errori di sintassi). Per scoprirli ti devi far aiutare da qualche tool (tipo FireBug per Firefox).

    A prima vista, un'occhiata superficiale, potrebbe essere questa riga qui (l'apostrifo, se non ricordo male, va quotato):

    codice:
    alert("Controlla l'ora inserita! Specificare un orario tra pranzo e cena!, modulo non inviato!");

    PS: JSP di quel tipo non si usano pių da almeno 15 anni... inoltre, č a dir poco pittoresco (oltre che inutile) scrivere "out.println()" dentro ad una JSP... semplicemente, scrivi il codice HTML cosė com'č fuori dai blocchi di scriptlet come giā stai facendo per i tag "HTML", "BODY", ecc.


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Solitamente questo accade quando ci sono degli errori nel markup o, pių probabilmente, dentro alla funzione JavaScript. Sembra che la funzione non venga richiamata, in realtā il controllo esce se vi sono errori di sintassi). Per scoprirli ti devi far aiutare da qualche tool (tipo FireBug per Firefox).

    A prima vista, un'occhiata superficiale, potrebbe essere questa riga qui (l'apostrifo, se non ricordo male, va quotato):

    codice:
    alert("Controlla l'ora inserita! Specificare un orario tra pranzo e cena!, modulo non inviato!");

    PS: JSP di quel tipo non si usano pių da almeno 15 anni... inoltre, č a dir poco pittoresco (oltre che inutile) scrivere "out.println()" dentro ad una JSP... semplicemente, scrivi il codice HTML cosė com'č fuori dai blocchi di scriptlet come giā stai facendo per i tag "HTML", "BODY", ecc.


    Ciao.
    Ciao, purtroppo non sembra essere quello il problema...
    quotarlo? Cioč anteporre \'\ intendi?
    Se usassi chrome invece sapresti indicarmi quale tool usare?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Purtroppo non conosco strumenti per Chrome... per questo tipo di problematiche io uso FireFox che mi dā la console degli errori.
    Ho notato un'altra cosa che non va (ma, sinceramente, non so se questo possa essere il problema), che riguarda il markup: hai inserito il form dentro ad una tabella... e questa tabella, per di pių, č anche mal scritta (dal punto di vista del markup).

    Una tabella HTML ha questa struttura:

    codice:
    <table>
       <tr>
          <td>...</td>
          ...
       </tr>
       ...
    </table>

    Ogni TR rappresenta una riga, ogni TD rappresenta una colonna. Tu non hai nulla di tutto questo, quindi, togli quella table che cosė č errata. Inoltre, č sbagliato mettere un form dentro al tag table (ha senso dentro ad un TD, cioč dentro ad una cella, ma non tra il tag TABLE e la sua chiusura. O il form prende tutta la tabella (e allora, TABLE č dentro al FORM) o il form sta dentro ad una cella (quindi FORM sta dentro a TD)... al pių potrebbe prendere un'intera riga, ma non l'ho mai visto in vita mia.

    Prova a postare la pagina HTML risultante dalla JSP, che vediamo se provandola in locale si riesce a capire il problema.


    PS: che senso ha concatenare due stringhe fisse, come in questi casi?

    codice:
    "<input type = 'text' name = 'gg' size = '3'>"+"gg"+
    "<input type = 'text' name = 'mm' size = '3'>"+"mm"+
    "<input type = 'text' name = 'aaaa' size = '6'>"+"aaaa"
    Tanto vale scrivere un'intera stringa, che almeno si evitano di creare 6 oggetti String + altri 5 di concatenazione...

    codice:
    // Potrei capire questo (3 stringhe + 2 concatenazioni)
    "<input type = 'text' name = 'gg' size = '3'>gg"+
    "<input type = 'text' name = 'mm' size = '3'>mm"+
    "<input type = 'text' name = 'aaaa' size = '6'>aaaa" 
    
    // Che č equivalente a questo (1 stringa e basta)
    "<input type = 'text' name = 'gg' size = '3'>gg<input type = 'text' name = 'mm' size = '3'>mm<input type = 'text' name = 'aaaa' size = '6'>aaaa"
    
    // O anche questo
    StringBuilder sb = new StringBuilder();
    sb.append("<input type = 'text' name = 'gg' size = '3'>gg");
    sb.append("<input type = 'text' name = 'mm' size = '3'>mm");
    sb.append("<input type = 'text' name = 'aaaa' size = '6'>aaaa");
    
    out.println( sb.toString() );

    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Ciao!

    Ho cercato di cambiare questo codice, usavo out.println() perchč precedentemente avevo usato script JSP. La cosa non funziona comunque, ho tolto dalla table il form, e ho scaricato Firefox e usato il tool che dicevi. Vedo solo in rosso le stringhe che inserisco tra doppi apici e non mi č sembrato di vedere errori o cose strane, non lo so usare?

    codice:
    <%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>
    
    
    
    
    
    <!DOCTYPE html>
    <html>
     <head>
             <link href="stile.css" rel="stylesheet" type="text/css">
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
             <script src="js/ajaxsbmt.js" type="text/javascript"></script>
                     
             
    
    
     </head>
     
        <body>
            
            <script type="text/javascript">
         
    function verifica(modulo)
    	{
    		if (modulo.username.value === "") {
    			alert("Campo -Username- mancante.\nModulo non spedito.");
    			modulo.username.focus();
    			return false;
    		}
                    
    		if (modulo.nome.value === "") {
    			alert("Campo -Nome- mancante.\nModulo non spedito.");
    			modulo.nome.focus();
    			return false;
    		}
                    
                    	if (modulo.cognome.value === "") {
    			alert("Campo -Cognome- mancante.\nModulo non spedito.");
    			modulo.cognome.focus();
    			return false;
                    }
                    
                     if (modulo.lista.value === "") {
    			alert("Campo -lista- mancante.\nModulo non spedito.");
    			modulo.lista.focus();
    			return false;
                    }
                    
                   
                    if (modulo.gg.value > 31 || modulo.gg.value < 0) {
                        alert("Giorno di consegna non corretto, modulo non inviato!");
                        modulo.gg.focus();
                         return false;
                    }
        
                    if (modulo.mm.value > 12 || modulo.mm.value < 0) {
                          alert("Mese di consegna non corretto, modulo non inviato!");
                          modulo.mm.focus();
                            return false;
                    }
        
                    if (modulo.aaaa.value < 2013) {
                          alert("Anno di consegna non corretto, modulo non inviato!");
                          modulo.aaaa.focus();
                            return false;
                    }
                    
            
                  
                    if (modulo.ora.value==="" || modulo.ora.value <0 || modulo.ora.value >24) {
                          alert("Ora inserita non valida! Specificare un orario tra pranzo e cena!, modulo non inviato!");
                          modulo.ora.focus();
                            return false;
                    }
                    
                     if (modulo.minuti.value==="" || modulo.minuti.value <0 || modulo.minuti.value >60) {
                          alert("Errore, specificare i minuti nel formato corretto! (00-59) modulo non inviato!");
                          modulo.minuti.focus();
                            return false;
                    }
                
                    
                    
                return true;
    	
            }
                    
      
    </script>
    
    
    
    
                <form name="modulo" action="<%=request.getContextPath()%>/Controller?state=order" onsubmit="return verifica(this)" method="POST">
                        
               <b>Nome:</b>
                <br>
                <input type="text" name="nome">
                <br>
                <b>Cognome:</b>
                <br>
                <input type="text" name="cognome">
                <br>
                <b>Lista:</b>
                <br>
                <input type="text" name="lista">
                <br>    
                <b>Data:</b>
                <br>
                <input type = "text" name = "gg" size = "3"> gg
                <input type = "text" name = "mm" size = "3"> mm
                <input type = "text" name = "aaaa" size = "6"> aaaa 
                <br>
                <b>Ora:</b>
                <br>
                <input type="text" name="ora"> h
                <br>
                <input type="text" name="minuti"> m
                <br>
                <input type="submit" value=" Inserisci Prenotazione ">
                <input type="reset" value="Cancella">
                </form>
                
          
        </body>
    </html>

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Ora ho visto...

    Tu, mettendo tutto dentro ad out.println() fai in modo che quello che tu scrivi venga sputato fuori cosė com'č. In pratica, stai impedendo a Tomcat (o, comunque, il tuo servlet container / application server) di interpretare e valutare il codice JSP (perchč per lui quello non č codice JSP, ma una semplice stringa da mandare in output).

    Guarda cosa vede il browser:


    codice:
    <form name="modulo" action="<%=request.getContextPath()%>/Controller?state=order" onsubmit="return verifica(this)" method="POST">

    Quello scriptlet non viene interpretato perchč per lui č una stringa fissa da sputare in output... e lo fa.

    Questo č uno dei motivi per cui bisogna stare attenti a non fare cose inutili nelle JSP: non ha alcun senso usare scriptlet del tipo "out.println()" dentro ad una JSP... semplicemente, ciō ceh va buttato in output va scritto cosė com'č nel corpo della JSP.

    Quindi, converti quella JSP togliendo gli out.println() e lasciando il codice HTML libero nella JSP, in modo che il servlet container possa interpretarlo ed eseguirlo.


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ora ho visto...

    Tu, mettendo tutto dentro ad out.println() fai in modo che quello che tu scrivi venga sputato fuori cosė com'č. In pratica, stai impedendo a Tomcat (o, comunque, il tuo servlet container / application server) di interpretare e valutare il codice JSP (perchč per lui quello non č codice JSP, ma una semplice stringa da mandare in output).

    Guarda cosa vede il browser:


    codice:
    <form name="modulo" action="<%=request.getContextPath()%>/Controller?state=order" onsubmit="return verifica(this)" method="POST">

    Quello scriptlet non viene interpretato perchč per lui č una stringa fissa da sputare in output... e lo fa.

    Questo č uno dei motivi per cui bisogna stare attenti a non fare cose inutili nelle JSP: non ha alcun senso usare scriptlet del tipo "out.println()" dentro ad una JSP... semplicemente, ciō ceh va buttato in output va scritto cosė com'č nel corpo della JSP.

    Quindi, converti quella JSP togliendo gli out.println() e lasciando il codice HTML libero nella JSP, in modo che il servlet container possa interpretarlo ed eseguirlo.


    Ciao.

    Scusa ma nel codice che ho inserito nel mio ultimo post non vedo nessuna out.println......

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Quote Originariamente inviata da Darčios89 Visualizza il messaggio
    Scusa ma nel codice che ho inserito nel mio ultimo post non vedo nessuna out.println......
    Mi ero andato a rileggere il primo post e pensavo che l'ultimo fosse il sorgente visto dal browser.

    Posta il sorgente HTML che vede il browser ora, cosė posso vedere lato client cosa viene spedito e posso fare un test.


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Cliccando su visualizza sorgente da Mozzilla, vedo il classico codice:

    codice:
    
    
    <!DOCTYPE html>
    <html>
     <head>
             <link href="stile.css" rel="stylesheet" type="text/css">
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
            
    
     </head>
     
        <body>
            
            <script type="text/javascript">
         
    function verifica(modulo)
    	{
    		if (modulo.username.value === "") {
    			alert("Campo -Username- mancante.\nModulo non spedito.");
    			modulo.username.focus();
    			return false;
    		}
                    
    		if (modulo.nome.value === "") {
    			alert("Campo -Nome- mancante.\nModulo non spedito.");
    			modulo.nome.focus();
    			return false;
    		}
                    
                    	if (modulo.cognome.value === "") {
    			alert("Campo -Cognome- mancante.\nModulo non spedito.");
    			modulo.cognome.focus();
    			return false;
                    }
                    
                     if (modulo.lista.value === "") {
    			alert("Campo -lista- mancante.\nModulo non spedito.");
    			modulo.lista.focus();
    			return false;
                    }
                    
                   
                    if (modulo.gg.value > 31 || modulo.gg.value < 0) {
                        alert("Giorno di consegna non corretto, modulo non inviato!");
                        modulo.gg.focus();
                         return false;
                    }
        
                    if (modulo.mm.value > 12 || modulo.mm.value < 0) {
                          alert("Mese di consegna non corretto, modulo non inviato!");
                          modulo.mm.focus();
                            return false;
                    }
        
                    if (modulo.aaaa.value < 2013) {
                          alert("Anno di consegna non corretto, modulo non inviato!");
                          modulo.aaaa.focus();
                            return false;
                    }
                    
            
                  
                    if (modulo.ora.value==="" || modulo.ora.value <0 || modulo.ora.value >24) {
                          alert("Ora inserita non valida! Specificare un orario tra pranzo e cena!, modulo non inviato!");
                          modulo.ora.focus();
                            return false;
                    }
                    
                     if (modulo.minuti.value==="" || modulo.minuti.value <0 || modulo.minuti.value >60) {
                          alert("Errore, specificare i minuti nel formato corretto! (00-59) modulo non inviato!");
                          modulo.minuti.focus();
                            return false;
                    }
                
                    
                    
                return true;
    	
            }
                    
      
    </script>
    
    
                <form name="modulo" action="/ProgettoB/Controller?state=order" onsubmit="return verifica(this);" method="POST">
                        
               <b>Nome:</b>
                <br>
                <input type="text" name="nome">
                <br>
                <b>Cognome:</b>
                <br>
                <input type="text" name="cognome">
                <br>
                <b>Lista:</b>
                <br>
                <input type="text" name="lista">
                <br>    
                <b>Data:</b>
                <br>
                <input type = "text" name = "gg" size = "3"> gg
                <input type = "text" name = "mm" size = "3"> mm
                <input type = "text" name = "aaaa" size = "6"> aaaa 
                <br>
                <b>Ora:</b>
                <br>
                <input type="text" name="ora"> h
                <br>
                <input type="text" name="minuti"> m
                <br>
                <input type="submit" value=" Inserisci Prenotazione ">
                <input type="reset" value="Cancella">
                </form>
                
          
        </body>
    </html>

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Ok, FireFox mi segnala questo errore nella console:


    codice:
    TypeError: modulo.username is undefined

    Ed, in effetti, nel tuo FORM non c'č nessun elemento chiamato "username".

    Questo significa chiaramente che la funzione JavaScript viene correttamente chiamata, ma essendovi degli errori non puō funzionare.

    PS: se usi FireFox vai nel menu "Strumenti -> Sviluppo Web -> Console del browser" per vedere tutti gli errori della pagina.


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.