Ho visto altre soluzioni come this una che è piuttosto semplice ma cosa succede se la funzione javascript fa più di un semplice confirm('sure?');
? Non so mai quando restituirà un bool.Il modo migliore per intercettare un postback Button
Così ho deciso di implementare tutti i miei pulsanti ASP.NET in questo modo:
<button id="btnDelete" name="btnDelete" class="btn">Delete</button>
<asp:Button ID="_btnDelete" runat="server" OnClick="_btnDelete_Click" style="display:none;" />
$('#btnDelete').click(function (e) {
$.blockUI({ message: $('#divConfirmDeleteModal'), overlayCSS: { cursor: 'default' }, css: { cursor: 'default' }, baseZ: 5555 });
return false;
});
$('#btnDeleteYes').click(function() {
$('#<%=_btnDelete.ClientID%>').trigger('click');
});
$('#<%=_btnDelete.ClientID%>').click(function (e) {
// the delay happens here. if i put an alert here, it fires,
// but then the page just loads until eventually the method gets called
<%= ClientScript.GetPostBackEventReference(_btnDelete, string.Empty) %>;
});
..e ha funzionato bene per un po 'fino ad ora. Sto riscontrando problemi in IE (anche versione 10) - il _btnDelete_Click
impiegherà fino a 2 minuti per essere richiamato dopo aver fatto clic sul pulsante che in ultima analisi lo attiva.
Sembra troppo hacky e mi chiedevo se c'è un approccio migliore.
edit:here è un altro modo "corretto" per farlo, ma voglio essere in grado di utilizzare una finestra di dialogo modale più elaborato e che hanno return true su un "sì" click, piuttosto che utilizzando la finestra di conferma nativo del browser .
EDIT2: Suppongo che quello che sto chiedendo è, c'è un modo per restituire un bool per una funzione OnClientClick che fa più di una cosa
Perché non gestire questo lato server? –
Cosa intendi? Con ClientScript.RegisterStartupScript? Voglio gestirlo sul lato client, penso. – user982119
Non fare affidamento su JavaScript, soprattutto se si tratta di un sito Web pubblico, cosa succede se JavaScript è disabilitato o se stanno utilizzando un browser mobile con supporto JavaScript errato? Che cosa stai cercando di ottenere? –