2010-02-16 12 views
12

C'è qualche evento javascript che viene attivato sul postback?evento Javascript sulla pagina postback

In caso contrario, come posso eseguire il codice lato client immediatamente dopo o prima di un postback della pagina?

+0

+1 Benvenuti in Stack Overflow, Bruno. – Sampson

risposta

0

Utilizzare AJAX, con un gestore eventi per onComplete.

2

La onsubmit evento sul tag form

Quando si utilizza jQuery è come questo

$("#yourformtagid").submit(function() { 
... 
} 
+0

JQuery? Non sono sicuro che l'OP voglia utilizzare un framework completo solo per fare il suo compito;) –

+2

Ma ogni sito dovrebbe avere jQuery nel caso :-) – TFD

+1

amico, non è stato bello. –

3

Si potrebbe aggiungere il JavaScript nel caricamento della pagina in questo modo ...

Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", 
    "alert('hello world');", true); 

O

Page.ClientScript.RegisterStartupScript(this.GetType(), "alertScript", 
    "function Hello() { alert('hello world'); }", true); 
-1

Non c'è un evento javascript attivato quando una pagina viene caricata dopo un postback, ma è possibile aggiungere javascript per il vostro modello HTML (file aspx) e solo eseguirlo se la pagina è stata pubblicata, in questo modo:

<script type='text/javascript'> 
    var isPostBack = '<%= this.IsPostBack%>' == 'True'; 
    if (isPostBack) { 
     alert('It's a PostBack!'); 
    } 
</script> 

Se si desidera personalizzare il JavaScript per funzionare solo in condizioni particolari (non solo ogni postback), è possibile creare una variabile a livello di pagina (protetto o pubblico) nella classe di tua pagina e fare qualcosa di simile:

var userClickedSubmit = '<%= this.UserClickedSubmit%>' == 'True'; 
if (userClickedSubmit) { 
    // Do something in javascript 
} 

(Niente contro ClientScript.RegisterStartupScript, che va bene - a volte si desidera mantenere il javascript nel modello di pagina, quindi metimes che si desidera mantenere nella classe di pagine.)

1

L'oggetto Page.ClientScript ha un RegisterOnSubmitStatement Si attiva dopo che qualsiasi input ha inviato il modulo. Questo potrebbe o non potrebbe essere quello che stai cercando, ma l'ho usato per notificare all'utente modifiche non salvate in moduli modificabili.

Il vantaggio di utilizzare su RegisterStartupScript è che con RegisterOnSubmitStatement, se un utente si allontana e torna utilizzando il browser, qualsiasi script che si è iniettato con RegisterStartupScript potrebbe riavviarsi, mentre RegisterOnSubmitStatement verrà eseguito solo se l'utente ha inviato il modulo.

+0

Grazie, proverò questo approccio! – Bruno

2

non so se hai ancora bisogno, ma dare un'occhiata a questo:

Run javascript function after Postback

ho risolvere il mio problema usando questo:

<script type="text/javascript"> 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_endRequest(function (s, e) { 
    alert('Postback!'); 
}); 

ci sono un sacco di opzioni, come

$('#id').live('change', function(){}); 

$(document).ready(function() {}); 
ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true); 

e continua. dipende da ciò di cui hai bisogno.

saluti =)

4

Credo che ciò che si sta cercando è l'Estratto Sys.WebForms.PageRequestManager beginRequest Event

:

l'evento BeginRequest viene generato prima l'elaborazione di un inizia postback asincrono e il postback è inviato al server. È possibile utilizzare questo evento per chiamare lo script personalizzato per impostare l'intestazione della richiesta o per avviare un'animazione che informa l'utente che il postback è in elaborazione .

Codice di esempio: (Dal link)

<script type="text/javascript" language="javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    function BeginRequestHandler(sender, args) 
    { 
     var elem = args.get_postBackElement(); 
     ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...'); 
    } 
    function EndRequestHandler(sender, args) 
    { 
     ActivateAlertDiv('hidden', 'AlertDiv', ''); 
    } 
    function ActivateAlertDiv(visstring, elem, msg) 
    { 
     var adiv = $get(elem); 
     adiv.style.visibility = visstring; 
     adiv.innerHTML = msg;      
    } 
</script> 

spero che aiuta. La classe PageRequestManager sembra essere poco conosciuta e poco utilizzata.

Problemi correlati