none
Script non eseguito RRS feed

  • Domanda

  • Ciao, ho uno strano problema (per me che non sono pratico di Asp.net).
    Ho queste righe di codice in un button:

                        System.Text.StringBuilder oString = new System.Text.StringBuilder();
                        oString.AppendLine("alert('Avvio validazione: ATTENDERE IL MESSAGGIO SUCCESSIVO!!!');");
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "ModalPopup", oString.ToString(), true);
                        Valida();
    
     

    Io mi aspetterei, quando premo il button, di vedere comparire il messaggio di attesa e, dopo il click, che parta la validazione.

    Invece quello che succede è che viene PRIMA avviata la validazione e DOPO viene visualizzato il messaggio!
    Perchè? Cosa ho sbagliato?

    lunedì 30 marzo 2020 08:21

Risposte

  • Eccolo qui, spero ti possa aiutare:

    Pagina.aspx

    <body>
        <form id="form1" runat="server">
            <div>
                Inserisci indirizo email:<br />
                <asp:TextBox ID="txtEmailID" runat="server"></asp:TextBox> 
                <br />
                <asp:Button ID="btnSubmit" Text="Submit" runat="server"  OnClick="btnSubmit_Click" OnClientClick="return chkvalidation()" />  
                <br />            
                <asp:Label ID="lblResultMessage" runat="server" Text=""></asp:Label>  
            </div>
        </form>
         <script> 
            function checkEmail(ElementID) {  
                var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;  
                if (!re.test(ElementID.value)) { 
                    return false;  
                }  
                return true;  
            }  
            function chkvalidation()  
            {  
                var exitval = true;  
                var msgtext = "";    
                var emailidval = document.getElementById("<%= txtEmailID.ClientID %>").value;  
                var emailidrslt = false;  
               if (emailidval.length > 1) {  
                        emailidrslt = checkEmail(document.getElementById("<%= txtEmailID.ClientID %>"));  
                    if (emailidrslt == false) {  
                        msgtext = msgtext + "Indirizzo email non corretto.";
                        exitval = false;  
                    }  
                }  
                else {  
                   msgtext = msgtext + "Email è richiesta.";
                   exitval = false;  
                }  
    
                if (exitval == false) {
                   alert(msgtext);
                }   
                return exitval;  
                }  
        </script>  
    </body>

    Pagina.aspx.cs

        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            bool EmailStatus = VerifyEmailID(txtEmailID.Text);
            if (!EmailStatus)
            {
                lblResultMessage.Text = "Indirizzo email non valido.</br>";
                lblResultMessage.Font.Bold = false;
                lblResultMessage.Font.Size = 14;
                lblResultMessage.ForeColor = System.Drawing.Color.Red;
            }
            else
            {
    
                lblResultMessage.Text = "Indirizzo email valido.</br>";
                lblResultMessage.Font.Bold = false;
                lblResultMessage.Font.Size = 14;
            }
        }
    
    
        public static bool VerifyEmailID(string email)
        {
            string expresion;
            expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            if (Regex.IsMatch(email, expresion))
            {
                if (Regex.Replace(email, expresion, string.Empty).Length == 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    

    Ciao


    Paolo Pranzo

    lunedì 30 marzo 2020 11:23
  • Grazie Paolo, in realtà ho utilizzato solo 

            function Messaggio()  
            {  alert("INIZIO VALIDAZIONE: ATTENDERE IL PROSSIMO MESSAGGIO!"); }  
    

    Ed ho ovviamente aggiunto:  OnClientClick="return Messaggio()"

    Problema risolto.

    Grazie ancora! :-)

    lunedì 30 marzo 2020 14:03

Tutte le risposte

  • Buongiorno Francesco,
    che tipo di validazione vorresti avviare: lato server o client?

    Paolo Pranzo

    lunedì 30 marzo 2020 09:57
  • Ciao Paolo, lato client, possibilmente.
    Grazie.

                     Francesco

    lunedì 30 marzo 2020 10:19
  • Lato client puoi utilizzare la proprietà OnClientClick restituendo un valore booleano che fa in caso di true partire l'evento OnClick del button.
    Se non ti è chiaro ti faccio un piccolo esempio.
    Ciao


    Paolo Pranzo

    lunedì 30 marzo 2020 10:46
  • A livello teorico è chiarissimo, il problema è che Html ed Asp.net li ho solo studiati, appunto, in teoria ^_^.
    Se non ti disturbo troppo un esempio mi eviterebbe un viaggio nel tempo.............
    Grazie di tutto.

                                        Francesco

    lunedì 30 marzo 2020 11:03
  • Eccolo qui, spero ti possa aiutare:

    Pagina.aspx

    <body>
        <form id="form1" runat="server">
            <div>
                Inserisci indirizo email:<br />
                <asp:TextBox ID="txtEmailID" runat="server"></asp:TextBox> 
                <br />
                <asp:Button ID="btnSubmit" Text="Submit" runat="server"  OnClick="btnSubmit_Click" OnClientClick="return chkvalidation()" />  
                <br />            
                <asp:Label ID="lblResultMessage" runat="server" Text=""></asp:Label>  
            </div>
        </form>
         <script> 
            function checkEmail(ElementID) {  
                var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;  
                if (!re.test(ElementID.value)) { 
                    return false;  
                }  
                return true;  
            }  
            function chkvalidation()  
            {  
                var exitval = true;  
                var msgtext = "";    
                var emailidval = document.getElementById("<%= txtEmailID.ClientID %>").value;  
                var emailidrslt = false;  
               if (emailidval.length > 1) {  
                        emailidrslt = checkEmail(document.getElementById("<%= txtEmailID.ClientID %>"));  
                    if (emailidrslt == false) {  
                        msgtext = msgtext + "Indirizzo email non corretto.";
                        exitval = false;  
                    }  
                }  
                else {  
                   msgtext = msgtext + "Email è richiesta.";
                   exitval = false;  
                }  
    
                if (exitval == false) {
                   alert(msgtext);
                }   
                return exitval;  
                }  
        </script>  
    </body>

    Pagina.aspx.cs

        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            bool EmailStatus = VerifyEmailID(txtEmailID.Text);
            if (!EmailStatus)
            {
                lblResultMessage.Text = "Indirizzo email non valido.</br>";
                lblResultMessage.Font.Bold = false;
                lblResultMessage.Font.Size = 14;
                lblResultMessage.ForeColor = System.Drawing.Color.Red;
            }
            else
            {
    
                lblResultMessage.Text = "Indirizzo email valido.</br>";
                lblResultMessage.Font.Bold = false;
                lblResultMessage.Font.Size = 14;
            }
        }
    
    
        public static bool VerifyEmailID(string email)
        {
            string expresion;
            expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            if (Regex.IsMatch(email, expresion))
            {
                if (Regex.Replace(email, expresion, string.Empty).Length == 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    

    Ciao


    Paolo Pranzo

    lunedì 30 marzo 2020 11:23
  • Grazie Paolo, in realtà ho utilizzato solo 

            function Messaggio()  
            {  alert("INIZIO VALIDAZIONE: ATTENDERE IL PROSSIMO MESSAGGIO!"); }  
    

    Ed ho ovviamente aggiunto:  OnClientClick="return Messaggio()"

    Problema risolto.

    Grazie ancora! :-)

    lunedì 30 marzo 2020 14:03