122 messaggi dal 15 gennaio 2008
cradle ha scritto:
Alternativamente potresti forzare la validazione client di ASP.NET, mi sembra una soluzione più consistente con la tua situazione.

Per farlo, ti è sufficiente scrivere questo codice per la tua fnAspetta:
function fnAspetta()
{
    if (typeof(Page_ClientValidate) == 'function')
    {
        var result = Page_ClientValidate();
        if (result)
        {
            // ... tuo codice qui ....
        }
    }
}


Let me know.

Ciao


in effetti così si controlla "a valle" se è tutto ok. E' molto più semplice... Solo che non mi funziona.... anzi, con il tuo codice, quando premo il pulsante di invio, parte ugualmente il postback della pagina nonostante il requiredfieldvalidator rilevi la mancanza del file....

PS: ancora non sono riuscito ad attivare il debug di javascript su firefox :(
Allora, due modifiche

step 1: fnAspetta ritorna false nel caso la validazione non abbia successo, mentre ritorna true se la validazione non è definita o se è tutto ok:
function fnAspetta()
{
    var result = true;
    if (typeof(Page_ClientValidate) == 'function')
    {
        result = Page_ClientValidate();
    }

    if (!result)
      return false;

    // ... tuo codice qui ....

    return true;
}


step2: sul tuo OnClientClick gestisci il valore di ritorno, ritornando false nel caso in cui questa non abbia successo e bloccando in questo modo il postback
<asp:Button ... OnClientClick="if (!fnAspetta()) return false;"
122 messaggi dal 15 gennaio 2008
perfetto! ora funziona tutto come volevo :)

in effetti la "trovata" di testare la validità della pagina invece che stare a cercare di "leggere" il valore del controllo FileUpload ha semplificato di molto le cose.
Ne farò tesoro.

Grazie mille
17 messaggi dal 20 giugno 2006
Il discorso semplicemente è questo. Quando fai un onclick da un qualsiasi pulsante se il valore di ritorno è false, la pagina non esegue nessun postback. Non c'entra nulla con aspx, ma è una caratteristica di Javascript. Quindi onclick="faiQualcosa();return false" non ti lancia la parte server del onclic
3.939 messaggi dal 28 gennaio 2003
Anche se hai risolto, chiedo scusa del mio errore: in effetti ho dimenticato che nel codice server mettevo:

Protected Sub form1_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Init
Dim frm As HtmlForm = DirectCast(sender, HtmlForm)
frm.Attributes.Add("onsubmit", "attesa();")

End Sub


e senza, ovviamente, non poteva funzionare.

Per quanto riguarlo l'uso di window.setTimeout, deriva dall'esperienza, dato che ho notato che certi browser (non ricordo quali) ne hanno bisogno.

Ciao
122 messaggi dal 15 gennaio 2008
pietro09 ha scritto:
Anche se hai risolto, chiedo scusa del mio errore: in effetti ho dimenticato che nel codice server mettevo:

Protected Sub form1_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Init
Dim frm As HtmlForm = DirectCast(sender, HtmlForm)
frm.Attributes.Add("onsubmit", "attesa();")

End Sub


e senza, ovviamente, non poteva funzionare.

Per quanto riguarlo l'uso di window.setTimeout, deriva dall'esperienza, dato che ho notato che certi browser (non ricordo quali) ne hanno bisogno.

Ciao


Giusto per il gusto di discutere: e se avessi una MasterPage e quindi il form1 NON risiedesse nella pagina ma nella masterpage? (che è comune a più pagine dell'applicazione)
3.939 messaggi dal 28 gennaio 2003
Purtroppo non so: mai utilizzato master page
3.939 messaggi dal 28 gennaio 2003
questo è un altro esempio (tanto per discutere)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Button1.OnClientClick = "if(typeof(Page_ClientValidate) == 'function' && !Page_ClientValidate() ) return false; this.value = 'Attendere...'; this.disabled = true; document.getElementById('span1').style.display=''; " & ClientScript.GetPostBackEventReference(Button1, "") & ";"
End Sub

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.