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?
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?
Utilizzare AJAX, con un gestore eventi per onComplete
.
La onsubmit evento sul tag form
Quando si utilizza jQuery è come questo
$("#yourformtagid").submit(function() {
...
}
JQuery? Non sono sicuro che l'OP voglia utilizzare un framework completo solo per fare il suo compito;) –
Ma ogni sito dovrebbe avere jQuery nel caso :-) – TFD
amico, non è stato bello. –
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);
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.)
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.
Grazie, proverò questo approccio! – Bruno
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 =)
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.
+1 Benvenuti in Stack Overflow, Bruno. – Sampson